当前位置: 首页 > 知识库问答 >
问题:

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

萧英光
2023-03-14

解释:这个问题更多的是关于Kotlin的设计意图。许多表达式语言同时支持三元运算符if表达式[例如,Ruby、Groovy.]

首先,我知道Groovy同时支持三元运算符猫王运算符:Groovy中的三元运算符。所以我不认为这是语法问题。

然后官方文件说:

在Kotlin中,if是一个表达式,即它返回一个值。因此不存在三元运算符(condition?then:else),因为普通if在这个角色中工作得很好。

这也不能说服我。因为Kotlin支持elvis operator,而普通if在该角色中也可以很好地工作。

我认为三进制运算符有时比普通的如果要好,尽管我想知道为什么Kotlin不支持三进制运算符

共有1个答案

隗驰
2023-03-14

在具有三元运算符语言中,您可以这样使用它

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服务获取的值的优先级。 我希望你们在这里发表意见,让我们讨论一下这两行中哪一行更具可读性? 不确定是否会给您带来困惑!?我一直在尝试使用它们,有时会因为一句话而失去指南针。也许,这也可能很愚蠢,但我很好奇你的想法是什么?