kotlin 作用域函數(shù)
作用:它們的唯一目的是在對(duì)象的上下文中執(zhí)行代碼塊情萤。當(dāng)對(duì)一個(gè)對(duì)象調(diào)用這樣的函數(shù)并提供一個(gè) [lambda 表達(dá)式]時(shí)畜疾,它會(huì)形成一個(gè)臨時(shí)作用域候齿。在此作用域中茶没,可以訪問(wèn)該對(duì)象而無(wú)需其名稱
共有以下五種:let筒占、run妻献、with蛛株、apply 以及 also,如果不使用作用域函數(shù)育拨,我們每次都要?jiǎng)?chuàng)建新對(duì)象谨履,在用新對(duì)象操作對(duì)象等,這樣就引入了一個(gè)新變量熬丧。
此五種作用域函數(shù)笋粟,引用的上下文 ,分別是this和it
run析蝴、with害捕、apply 使用的是this上下文,對(duì)于主要對(duì)對(duì)象成員最操作的時(shí)候闷畸,
使 用this上下文尝盼,用于區(qū)分接受者的成員及外部成員或函數(shù)。
let 及 also 將上下文對(duì)象作為 lambda 表達(dá)式參數(shù)使用的是it,it比this簡(jiǎn)短佑菩,
更容易閱讀盾沫,當(dāng)調(diào)用對(duì)象函數(shù)或?qū)傩詴r(shí),不能像 this 這樣隱式地訪問(wèn)對(duì)象.
因此倘待,當(dāng)上下文對(duì)象在作用域中主要用作函數(shù)調(diào)用中的參數(shù)時(shí)疮跑,使用 it 作為
上下文對(duì)象會(huì)更好。若在代碼塊中使用多個(gè)變量凸舵,則 it 也更好.此外祖娘,當(dāng)將上
下文對(duì)象作為參數(shù)傳遞時(shí),可以為上下文對(duì)象指定在作用域內(nèi)的自定義名稱啊奄,
代碼更容易閱讀渐苏。
五種作用域返回的值
apply 及 also 返回上下文對(duì)象
let、run 及 with 返回 lambda 表達(dá)式結(jié)果.
以下是根據(jù)預(yù)期目的選擇作用域函數(shù)的簡(jiǎn)短指南:
對(duì)一個(gè)非空(non-null)對(duì)象執(zhí)行 lambda 表達(dá)式:let
將表達(dá)式作為變量引入為局部作用域中:let
對(duì)象配置:apply
對(duì)象配置并且計(jì)算結(jié)果:run
在需要表達(dá)式的地方運(yùn)行語(yǔ)句:非擴(kuò)展的 run
附加效果:also
一個(gè)對(duì)象的一組函數(shù)調(diào)用:with