Kotlin “方法参数中的拓展函数”

public inline fun <T, R> T.run(block: T.() -> R): R {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    return block()
}

Kotlin标准库中有这样一个拓展函数,出现了 T.() -> R 这样类型的入参。这个与普通的 () -> R 有什么区别呢?

其实只有一点小区别,这里将入参 block 定义为了 T的拓展函数,赋予了block访问T的能力。当使用lambda表达式并且要访问T时,可以用这个方式。

猜你喜欢

转载自blog.csdn.net/u012218652/article/details/125426571
今日推荐