1)let--默認當前這個對象作為閉包的it參數(shù),返回值是函數(shù)里面最后一行侥衬,或者指定return
--eg.--輸出字為 str 和 Log的返回值
str.let {? ? ? ? ? ?
Log.i("----", "$it")? ? ??
}.let {? ? ? ? ? ?
Log.i("----", "$it")? ? ? ?
}
2)apply
--調(diào)用某對象的apply函數(shù),在函數(shù)范圍內(nèi)跑芳,可以任意調(diào)用該對象的任意方法轴总,并返回該對象
--eg.
--返回為apply
tv?.apply {? ? ? ? ? ?
text = "apply"? ? ??
}.let {? ? ? ? ? ?
Log.i("----", "${it?.text}")
}
3)with
--返回是最后一行,可以直接調(diào)用對象的方法 類似于 apply和let的結(jié)合
--eg.
--返回為true with(ArrayList()) {
add("with")
add("with")
add(with)
}.let {
Log.i("----", "let-->$it")
}
4)run
--run函數(shù)是使用最后一行的返回
--eg.
--返回為 strstr
var str: String = "str"
str.run {
str + str
}.let {
Log.i("----", "run-->$it")
}
說明:
apply和with 的異同
1.apply和with 都可以直接調(diào)用該對象的任意方法
2.apply 和with 都支持 extension
3..apply返回該對象,with 返回最后一行的返回值
run和with的異同
1.with 不支持extension
2.run 支持 extension