如果非空,则将Kotlin设置为Null。

7
在Kotlin语言中,有没有一种习语可以在变量不为空时将其设置为null?比以下代码更语义化的东西:
var test: String? = null
if(test != null) test = null
3个回答

8

3

只需将局部变量赋值为null:

test = null

如果它不是空的,你将把null赋给这个变量。 如果变量为空,你只需要将null赋值给它,因此什么也没有改变。


1
  1. 我建议将此作为评论添加到问题中,而不是作为答案,因为这实际上并没有回答问题。
  2. 如果它是null-某些事情确实会发生:赋值。对于简单属性,将其设置为“null”不是问题,但对于具有支持属性等的属性,我可以理解为什么只有在它不是“null”时才想将其设置为“null”。
- mfulton26
但是我们有具体的案例 - 定义变量,而不是属性。 - Ruslan
True。也许你可以澄清一下,如果它是 null,则会进行赋值,但它只是将变量设置为相同的值:null - mfulton26
1
我知道这是更好的做法,但我特别问的是关于Kotlin惯用语的。 - Eliezer

2

我想出了这个扩展程序,使得这个过程更加简单:

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 */ }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接