Kotlin相当于三元运算符

joh*_*crq 6 ternary-operator kotlin

所以在java中我们有三元运算符(?),它有时很容易通过if-else内联计算一些值.例如:

myAdapter.setAdapterItems(
            textToSearch.length == 0
            ? noteList
            : noteList.sublist(0, length-5)
)
Run Code Online (Sandbox Code Playgroud)

我知道kotlin中的等价物是:

myAdapter.setAdapterItems(
                if(textToSearch.length == 0)
                    noteList
                else
                    noteList.sublist(0, length-5) 
)
Run Code Online (Sandbox Code Playgroud)

但我曾经习惯于喜欢Java中的三元运算符,用于短表达式条件,以及将值传递给方法时.有没有Kotlin等价物?

Eri*_*ran 15

Kotlin没有三元运营商.

https://kotlinlang.org/docs/reference/control-flow.html

在Kotlin中,if是一个表达式,即它返回一个值.因此没有三元运算符(condition?then:else),因为普通的if在这个角色中工作正常.

  • 不是这个的忠实粉丝,tbh (14认同)
  • 使用`if ... else`作为表达式的决定可能与决定使用`when`(类似于switch)作为表达式一致.但我认为取代`a?b:c`用`if(a)b else c`违背目标,使Kotlin比Java更简洁和可读. (6认同)
  • 也许是为了避免与`?:`混淆和`?`后跟`:`...但是我想念它. (3认同)