Kotlin 等效于三元运算符 [重复]

Posted

技术标签:

【中文标题】Kotlin 等效于三元运算符 [重复]【英文标题】:Kotlin equivalent of ternary operator [duplicate] 【发布时间】:2016-04-28 09:59:50 【问题描述】:

所以在 java 中我们有三元运算符 (?),它有时对简化 if-else 内联计算的某些值很有用。例如:

myAdapter.setAdapterItems(
            textToSearch.length == 0
            ? noteList
            : noteList.sublist(0, length-5)
)

我知道 kotlin 中的等价物是:

myAdapter.setAdapterItems(
                if(textToSearch.length == 0)
                    noteList
                else
                    noteList.sublist(0, length-5) 
)

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

【问题讨论】:

【参考方案1】:

Kotlin 中没有三元运算符。

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

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

你可以找到更详细的解释here。

【讨论】:

不太喜欢这个,tbh 也许是为了避免混淆 ?:? 后跟 : ...但我想念它。 @JaysonMinard 我觉得能够以中缀形式使用 if 会减少大部分样板文件。 @KirillRakhman @JaysonMinard 这样的事情对我来说不是不清楚:(textToSearch.length == 0) +noteList -noteList.sublist(0, length-5)我是这样实现的:gist.github.com/Jire/46b1ee35855a5e97bfd5 使用if...else 作为表达式的决定可能伴随着使用when(类似于switch)作为表达式的决定。但我认为将a ? b : c 替换为if(a) b else c 与使Kotlin 比Java 更简洁和可读的目标背道而驰。

以上是关于Kotlin 等效于三元运算符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

kotlin中的三元运算符[重复]

kotlin中的三元运算符[重复]

三元运算符可以等效于与逻辑运算符的短路吗?

Python等效于省略三元运算符的第二部分(a if a else b)

为啥 Kotlin 不支持“三元运算符”[关闭]

为啥使用三元运算符返回字符串与在等效 if/else 块中返回的代码有很大不同?