【发布时间】:2017-06-13 00:42:44
【问题描述】:
在 Kotlin 中是否有一个习惯用法可以将一个变量设置为 null,如果它还不是 null?在语义上更令人愉悦的是:
var test: String? = null
if(test != null) test = null
【问题讨论】:
在 Kotlin 中是否有一个习惯用法可以将一个变量设置为 null,如果它还不是 null?在语义上更令人愉悦的是:
var test: String? = null
if(test != null) test = null
【问题讨论】:
您可以使用execute if not null idiom:
test?.let { test = null }
【讨论】:
只需将 null 分配给局部变量:
test = null
如果它不为 null - 您将 null 分配给此变量。 如果变量为 null - 您只需将 null 分配给它,所以没有任何改变。
【讨论】:
null 不是问题,但对于具有支持属性等的属性,我可以理解为什么人们可能只想将其设置为null,如果它还不是null。跨度>
null,则确实会发生赋值,但它只是将变量设置为相同的值:null。
我想出了这个扩展,它使这变得更简单:
inline fun <T, R> T.letThenNull(block: (T) -> R): T? { block(this); return null }
val test: Any? = null
...
test = test?.letThenNull { /* do something with test */ }
【讨论】: