1)let--默认当前这个对象作为闭包的it参数,返回值是函数里面最后一行,或者指定return
--eg.--输出字为 str 和 Log的返回值
str.let {
Log.i("----", "$it")
}.let {
Log.i("----", "$it")
}
2)apply
--调用某对象的apply函数,在函数范围内,可以任意调用该对象的任意方法,并返回该对象
--eg.
--返回为apply
tv?.apply {
text = "apply"
}.let {
Log.i("----", "${it?.text}")
}
3)with
--返回是最后一行,可以直接调用对象的方法 类似于 apply和let的结合
--eg.
--返回为true with(ArrayList()) {
add("with")
add("with")
add(with)
}.let {
Log.i("----", "let-->$it")
}
4)run
--run函数是使用最后一行的返回
--eg.
--返回为 strstr
var str: String = "str"
str.run {
str + str
}.let {
Log.i("----", "run-->$it")
}
说明:
apply和with 的异同
1.apply和with 都可以直接调用该对象的任意方法
2.apply 和with 都支持 extension
3..apply返回该对象,with 返回最后一行的返回值
run和with的异同
1.with 不支持extension
2.run 支持 extension