kotlin 作用域函數(shù)

kotlin 作用域函數(shù)

作用:它們的唯一目的是在對象的上下文中執(zhí)行代碼塊。當對一個對象調(diào)用這樣的函數(shù)并提供一個 [lambda 表達式]時,它會形成一個臨時作用域。在此作用域中,可以訪問該對象而無需其名稱
共有以下五種:let、run、with、apply 以及 also,如果不使用作用域函數(shù),我們每次都要創(chuàng)建新對象,在用新對象操作對象等,這樣就引入了一個新變量。

此五種作用域函數(shù),引用的上下文 ,分別是this和it

run、with、apply 使用的是this上下文,對于主要對對象成員最操作的時候,
使  用this上下文,用于區(qū)分接受者的成員及外部成員或函數(shù)。
let 及 also 將上下文對象作為 lambda 表達式參數(shù)使用的是it,it比this簡短,
更容易閱讀,當調(diào)用對象函數(shù)或?qū)傩詴r,不能像 this 這樣隱式地訪問對象.
因此,當上下文對象在作用域中主要用作函數(shù)調(diào)用中的參數(shù)時,使用 it 作為
上下文對象會更好。若在代碼塊中使用多個變量,則 it 也更好.此外,當將上
下文對象作為參數(shù)傳遞時,可以為上下文對象指定在作用域內(nèi)的自定義名稱,
代碼更容易閱讀。

五種作用域返回的值

apply 及 also 返回上下文對象
let、run 及 with 返回 lambda 表達式結(jié)果.

以下是根據(jù)預期目的選擇作用域函數(shù)的簡短指南:

對一個非空(non-null)對象執(zhí)行 lambda 表達式:let
將表達式作為變量引入為局部作用域中:let
對象配置:apply
對象配置并且計算結(jié)果:run
在需要表達式的地方運行語句:非擴展的 run
附加效果:also
一個對象的一組函數(shù)調(diào)用:with
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容