kotlin实战 let函数
刚好有一个地方是如果变量不为空就执行什么什么
翻kotlin实战pdf,发现了let函数
下面开始copy大法
我之前使用apply函数来做这个事情的,因为前面我有很多new一个对象的地方使用apply来初始化对象的属性
apply的源码
/**
* Calls the specified function [block] with `this` value as its receiver and returns `this` value.
*/
@kotlin.internal.InlineOnly
public inline fun <T> T.apply(block: T.() -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block()
return this
}
而let的源码是
/**
* Calls the specified function [block] with `this` value as its argument and returns its result.
*/
@kotlin.internal.InlineOnly
public inline fun <T, R> T.let(block: (T) -> R): R {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return block(this)
}
可以看到apply返回this,let返回block的返回值