Kotlin,可以调用null。还{}

时间:2018-08-21 12:29:45

标签: generics kotlin nullable

有类似的代码:

result.also{......}

但是result可能为null,并且编译器没有抱怨,它与

相同
null.also{...}

可以在also{}上致电null吗?

1 个答案:

答案 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"