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 等效于三元运算符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章