block() 与 block(this) 的区别
来源:5-3 常见高阶函数(forEach,map,flatmap,fold,reduce,filter,takeWhile,let,apply,with,use)-2

慕九州6385248
2019-10-09
老师,我在看 apply 和 also 源码的时候发现 also 里面是 block(this),为什么要传个 this,是什么意思,感觉他们用法上也没啥区别
@kotlin.internal.InlineOnly
public inline fun <T> T.apply(block: T.() -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block()
return this
}
@kotlin.internal.InlineOnly
@SinceKotlin("1.1")
public inline fun <T> T.also(block: (T) -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block(this)
return this
}
写回答
1回答
-
一个是把T做为 receiver,另一个是把 T做为参数,所以用的时候一个里面是 this,一个里面是 it~
012019-10-09
相似问题