kotlin,可以调用 null.also{}

kotlin, is it ok to call null.also{}

有这样的代码:

result.also{......}

但是 result 可能为空并且编译器不会报错,它与

相同
null.also{...}

可以在 null 上给 also{} 打电话吗?

是的。正如函数定义告诉您的那样...

inline fun <T> T.also(block: (T) -> Unit): T (source)

...T 没有定义任何上限,因此可以与任何 nullablenon-nullable[=26] 一起使用=], 类型(<T><T: Any?> 相同)。

如果您担心 NullPointerExceptions,则大可不必。 also 函数简单地调用 block 及其接收者,在您的例子中是 null ,然后再次返回接收者。例如,以下是合法的:

 //returns null and _also_ prints "null"
return null.also { println(it) }