Kotlin无效性检查if-else功能方法......怎么样?

时间:2017-12-13 00:52:34

标签: kotlin

这样的简单检查
if (variable != null) {
   doSomething(variable)
}

我们可以改为

variable?.let { doSometing(it) }

但是对于其他情况

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

有没有办法在单一功能中这样做?是否有类似的东西?

3 个答案:

答案 0 :(得分:0)

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

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

然而,我个人认为这很快就会变得难以理解。 if-expression没有任何问题。

答案 1 :(得分:0)

另一种可能与功能风格完美结合的方法是使用when,它非常接近模式匹配:

if
但是,我会争辩说,如果你追求的是它的自然目的 - 条件执行,你应该小心放弃经典的if陈述。如果您以两种不同的方式计算一个值,然后以相同的方式使用它,这种方法是有意义的。但是,如果您的代码路径在此时出现分歧而又不再相遇,那么Mat src = imread("img.png",CV_LOAD_IMAGE_COLOR); //load image Mat bgr[3]; //destination array split(src,bgr);//split source //Note: OpenCV uses BGR color order imwrite("blue.png",bgr[0]); //blue channel imwrite("green.png",bgr[1]); //green channel imwrite("red.png",bgr[2]); //red channel 会提供更清晰的意图。

答案 2 :(得分:0)

如果不为null,则可以使用三元运算符映射null-null值,以使用If ... Else Statements检查非空条件。

在这里,我写了一些代码片段来检查值是否为空,

  

案例1:初始化值

  fun main(args: Array<String>) {

   val value:Int ?= 10

   val mapped = value?.let { "Value is == $value" } ?: "Value not initialized..."

   println(mapped)
}

你得结果:值是== 10

  

案例2:值集保持为空

  fun main(args: Array<String>) {

   val value:Int ?= null

   val mapped = value?.let { "Value is == $value" } ?: "Value not initialized..."

   println(mapped)
}

你得结果:价值未初始化......