
apply
它与其它特殊之处在于,它返回本省对象:
1 | public inline fun <T> T.apply(block: T.() -> Unit): T {} |
例如:
1 | ArrayList<String>().apply { |
打印结果:
1 | list===[qq, mi] |
这里T 就是 ArrayList<String>() 返回对象本身,也就是ArrayList
内部是
this还是it这个倒没什么,编辑器一般都会有提示,如图:
apply 是 this , also 是 it
run
run:1
public inline fun <T, R> T.run(block: T.() -> R): R {}
返回最后一行,传入
block返回 最后一行,例如:1
2
3
4
5
6
7ArrayList<String>().run {
add("lala")
add("kaka")
this.get(1)
}.let {
Log.i("xx","返回::"+it)
}打印:
1
返回::kaka
let
1 | public inline fun <T, R> T.let(block: (T) -> R): R {} |
也是返回最后一行,但是它内部不能调用对象的方法:
1 | fun letGo(): Int{ |
调用letGO 返回 1
with
类似于:apply + let 的结合
1 | public inline fun <T, R> with(receiver: T, block: T.() -> R): R {} |
例如:
1 | with(ArrayList<String>()){ |