有类似的代码:
result.also{......}
但是result
可能为null,并且编译器没有抱怨,它与
null.also{...}
可以在also{}
上致电null
吗?
答案 0 :(得分:9)
是的。正如函数定义告诉您的:
inline fun <T> T.also(block: (T) -> Unit): T (source)
T
没有定义任何上限,因此可以与任何可为null和不可为null的类型(<T>
与<T: Any?>
相同)一起使用。
如果您担心NullPointerExceptions,则不必这样做。 also
函数仅使用其接收方block
来调用null
,然后再返回接收方。例如,以下完全没问题:
return null.also { println(it) } //returns null and _also_ prints "null"