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回答

bennyhuo

2019-10-09

一个是把T做为 receiver,另一个是把 T做为参数,所以用的时候一个里面是 this,一个里面是 it~

0
1
慕九州6385248
大概明白了,多谢老师
2019-10-09
共1条回复

Android首选开发语言Kotlin入门与进阶

Google I/O大会钦定Android一级开发语言,现在不学,等待何时

3122 学习 · 387 问题

查看课程