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>()){ |