如何将嵌套转换为何时

时间:2020-07-20 02:14:48

标签: kotlin

如果我有以下条件,则如何将其转换为时间?

if (something.isNotEmpty()) {
    doSomething1()
    if (something.contains(condition1)) {
        doSomething2()
    } else if (something.contains(condition2)) {
        doSomething3()
    }
} else {
    doSomething4()
}

// when condition something like
when(something) {
    ... -> ...
}

4 个答案:

答案 0 :(得分:1)

您不需要嵌套when语句。您可以;

        when{
            something.isNotEmpty() -> {
                doSomething1()
                if (something.contains(condition1)){
                    doSomething2()
                }
                else if(something.contains(condition2)) {
                    doSomething3()
                }
            }
            else -> doSomething4()
        }

答案 1 :(得分:1)

您可能无法在一整个when中完成整个逻辑,我建议不要将难以阅读的内容嵌套,而应使用更扁平的方法:

if (!something.isNotEmpty()) { // or something.isEmpty()
    doSomething4()
    return
}

doSomething1()

when {
    something.contains(condition1) -> doSomething2()
    something.contains(condition2) -> doSomething3()
}

答案 2 :(得分:0)

when {
    something.isNotEmpty() -> {
        doSomething1()
        when {
            something.contains(condition1) -> doSomething2()
            something.contains(condition2) -> doSomething3()
        }
    }
    else -> doSomething4()
}

答案 3 :(得分:0)

尽管有其他答案,一种更好的方法是将if条件置于when条件中,以保持原样的逻辑。

代码如下:

when(something.isNotEmpty) {
  true -> {
    doSomething1()
    when {
      something.contains(condition1) -> doSomething2()
      something.contains(condition2) -> doSomething3()
    }
  }
  false -> doSomething4()
}