解释:这个问题更多的是关于Kotlin的设计意图。许多表达式语言同时支持三元运算符
和if表达式
[例如,Ruby、Groovy.]
首先,我知道Groovy同时支持三元运算符
和猫王运算符
:Groovy中的三元运算符。所以我不认为这是语法问题。
然后官方文件说:
在Kotlin中,if是一个表达式,即它返回一个值。因此不存在三元运算符(condition?then:else),因为普通if在这个角色中工作得很好。
这也不能说服我。因为Kotlin支持elvis operator
,而普通if在该角色中也可以很好地工作。
我认为三进制运算符
有时比普通的如果
要好,尽管我想知道为什么Kotlin不支持三进制运算符
?
在具有三元运算符
的语言中,您可以这样使用它
String value = condition ? foo : bar;
在Kotlin中,可以使用if和else完成同样的操作
var value = if(condition) foo else bar;
它的位比三元运算符
详细。但Kotlin的设计师认为这是可以的。您可以这样使用if-else
,因为在Kotlin中,if
是一个表达式并返回一个值
var value = if(foo != null) foo else bar;
但如果使用Elvis运算符
,则简化如下
var value = foo ?: bar;
这是相当大的简化,Kotlin决定保留它。
但这并不能说服我。因为Kotlin支持,而普通if在该角色中也很好。 我认为有时比普通的,尽管我想知道为什么Kotlin不支持?
问题内容: 我正在尝试使用Diamond运算符,但是却收到以下消息: -source 1.5中不支持Diamond运算符(使用-source 7或更高版本来启用Diamond运算符) 它可以在Android的netbeans中修复吗? 问题答案: Android需要Java来源合规性5.0或6.0(Java5 / 6)。开箱即用不支持Java7。这些文章描述了有关如何使用某些Java7功能的技巧:
但是我发现我不能用围棋做同样的事情,我必须写一个if-else语句。我只是想知道为什么在围棋世界里不存在这种情况(是否有一些设计原则来解释这种情况)
条件(三元)运算符是 JavaScript 仅有的使用三个操作数的运算符。一个条件后面会跟一个问号(?),如果条件为 truthy ,则问号后面的表达式A将会执行;表达式A后面跟着一个冒号(:),如果条件为 falsy ,则冒号后面的表达式B将会执行。本运算符经常作为 if 语句的简捷形式来使用。(MDN) 三元运算符,也称条件运算符、三目运算符。 三元运算符可以代替简单的 if 语句。 1. 语
假设我们有一个前提条件,有了类定义: 其中实例是从数据存储中获取的,它可以是 变量通过web服务填充,也可以是。结果应该加载从web服务获取的值的优先级。 我希望你们在这里发表意见,让我们讨论一下这两行中哪一行更具可读性? 不确定是否会给您带来困惑!?我一直在尝试使用它们,有时会因为一句话而失去指南针。也许,这也可能很愚蠢,但我很好奇你的想法是什么?
问题内容: 这段代码有什么问题: 问题答案: 三元运算符不能有不返回值或方法的语句。您需要具有返回值的语句。 您需要重写它。