let
結構:fun <T, R> T.let(block: (T) -> R): R = block(this)
回傳值:閉包形式回傳
是否為擴展函式:是
當前物件指代:it
應用場景:一般用于判空
with
結構:fun <T, R> with(receiver: T, block: T.() -> R): R = receiver.block()
回傳值:閉包形式回傳
是否為擴展函式:否
當前物件指代:this或省略
應用場景:重復呼叫一個物件的多個方法時,比如RecyclerView中ViewHolder賦值的時候
run
結構:fun <T, R> T.run(block: T.() -> R): R = block()
回傳值:閉包形式回傳
是否為擴展函式:是
當前物件指代:this或省略
應用場景:let應用場景+with應用場景
apply
結構:fun T.apply(block: T.() -> Unit): T { block(); return this }
回傳值:this (鏈式呼叫)
是否為擴展函式:是
當前物件指代:this或省略
應用場景:
- let應用場景+with應用場景+run應用場景
- 初始化一個物件時,操作物件屬性,并最侄訓傳這個物件,
- 動態inflate出一個XML的View的時候需要給View系結資料也會用到.
- 可用于多個擴展函式鏈式呼叫
- 資料model多層級包裹判空處理的問題
also
結構:fun T.also(block: (T) -> Unit): T { block(this); return this }
回傳值:this (鏈式呼叫)
是否為擴展函式:是
當前物件指代:it
應用場景:let應用場景 + 多個擴展函式鏈式呼叫
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/293382.html
標籤:其他
下一篇:Calling a method in the system process without a qualified user
