gpt4 book ai didi

ternary-operator - 为什么 Kotlin 不支持 "ternary operator"

转载 作者:IT老高 更新时间:2023-10-28 13:35:57 28 4
gpt4 key购买 nike

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


首先,我知道 Groovy 支持 三元运算符Elvis 运算符:Ternary operator in Groovy .所以我认为这不是语法问题。


然后官方文档说:

In Kotlin, if is an expression, i.e. it returns a value. Therefore there is no ternary operator (condition ? then : else), because ordinary if works fine in this role.

这并不能说服我。因为 Kotlin 支持 Elvis operator 普通 if 在那个角色中也可以正常工作。

我觉得三元运算符有时比普通的if要好,不过我想知道为什么Kotlin不只支持三元运算符

最佳答案

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

String value = condition ? foo : bar;

在 Kotlin 中,您可以使用 if 和 else 做同样的事情

var value = if(condition) foo else bar;

它比 三元运算符 有点冗长。但是 Kotlin 的设计者认为这没问题。您可以像这样使用 if-else 因为在 Kotlin 中 if 是一个表达式并返回一个值

Elvis operator本质上是三元条件语句的压缩版本,相当于Kotlin中的following。

var value = if(foo != null) foo else bar;

但如果使用 Elvis operator 则简化如下

var value = foo ?: bar;

这是相当大的简化,Kotlin 决定保留它。

关于ternary-operator - 为什么 Kotlin 不支持 "ternary operator",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35910693/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com