。。闻所未闻?
非也
看apply函数
public inline fun <T> T.apply(block: T.() -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block()
return this
}
他的方法参数就是 block:T.()->Unit
那么。什么意思呢
首先我们先看下普通的扩展函数
infix fun String?.printWithDefault(default: String) = print(this ?: default);
类型为String?很好理解
难点 泛型扩展函数
fun <T> T.easyPrint(): T {
println(this)
return this
}
欸 你会发现
T.easyPrint() 里面可以用this 。this指的是T
那么 apply函数里面大家都知道
fun main() {
1.apply{
println(this)
}
}
也是this对象。那么就懂了吧
这个函数必须是一个可以返回本身的方法体。。。。听着有些绕。但是我就是这么理解的。