解释:这个问题更多的是关于Kotlin的设计意图 . 许多表达式语言都支持 Ternary operator
和 if expression
[例如,Ruby,Groovy . ]
首先,我知道Groovy同时支持 Ternary operator
和 Elvis operator
:Ternary operator in Groovy . 所以我没有't think it'的语法问题 .
然后官方文件说:
在Kotlin中,if是一个表达式,即它返回一个值 . 因此没有三元运算符(条件?则:else),因为普通的if在这个角色中工作正常 .
这并不能说服我 . 因为Kotlin支持 Elvis operator
哪个普通如果在那个角色也可以正常工作 .
我认为 ternary operator
有时比普通 if
更好,但我想知道Kotlin为什么不支持 ternary operator
?
3 回答
在具有
ternary operator
的语言中,您可以像这样使用它在Kotlin中,你可以使用if和else做同样的事情
它比
ternary operator
有点冗长 . 但是Kotlin的设计师认为它没问题 . 您可以像这样使用if-else
因为在Kotlin中if
是一个表达式并返回一个值Elvis operator
本质上是三元条件语句的压缩版本,相当于Kotlin中的跟随 .但如果使用
Elvis operator
,则简化如下这是相当大的简化,Kotlin决定保留它 .
三元运算符有它的问题,例如很难用大表达式阅读 . 这是我的C项目中的一行,我使用了三元运算符:
我宁愿在这里使用
if else
表达式,因为它更加明显 .回答你的问题,我知道为什么
ternary operator
未在Kotlin中实施的两个原因:1)因为
if else
无论如何都是一个表达式,它可以代替? :
2)其他语言的经验(C)表明
? :
会激发难以阅读的代码,因此最好不要使用因为
if .. else ..
工作正常 . 看一看: