Kotlin无效性检查if-elsefunction的方法…如何?

为了简单的检查

if (variable != null) { doSomething(variable) } 

我们可以改变

 variable?.let { doSometing(it) } 

但对于其他情况

 if (variable != null) { doSomething(variable) } else { doOtherThing() } 

在单一function中是否有这样做的方法? 有没有像这样的东西?

你可以使用elvis-operator?:像这样:

 variable?.let { doSomething(it) } ?: doOtherThing() 

不过,我个人认为这很快就会变得难以理解。 ifexpression式没有错。

另一种可能与function风格相适应的方法是使用何时,这非常接近模式匹配:

 when(variable) { null -> doOtherThingSomething() else -> doSomething(variable) } 

但是,我认为, if抛弃了经典的if语句,那么你应该小心谨慎,如果你所追求的是自然的目的 – 有条件的执行。 如果你用两种不同的方式计算价值,然后以相同的方式使用它,这种方法是有道理的。 但是,如果你的代码路径在这一点上分歧,不会再次相遇,那么if提供更明确的意图。

如果使用三元运算符检查非空条件与If … Else语句,则可以映射可为null的值(如果不为null)。

在这里,我写了一些代码片段来检查值null或不,

情况1:值初始化

  fun main(args: Array) { val value:Int ?= 10 val mapped = value?.let { "Value is == $value" } ?: "Value not initialized..." println(mapped) } 

你得到的结果是:值是== 10

情况2:值集保持为空

  fun main(args: Array) { val value:Int ?= null val mapped = value?.let { "Value is == $value" } ?: "Value not initialized..." println(mapped) } 

你得到的结果:值未初始化…