是否有相当于 ?: java 运算符的 kotlin?
Posted
技术标签:
【中文标题】是否有相当于 ?: java 运算符的 kotlin?【英文标题】:Is there an kotlin equivalent of ?: java operator? 【发布时间】:2020-06-03 22:08:36 【问题描述】:这里是不情愿的 kotlin 新手。
有没有 kotlin 等价于 ?:java 运算符?
我尝试在谷歌上搜索。大多数结果都在谈论 ?: kotlin 中的(elvis 运算符)。
正在寻找一种在 kotlin 中编写此代码的方法:
//java example
//return condition ? a : b;
【问题讨论】:
这能回答你的问题吗? Kotlin Ternary Conditional Operator 【参考方案1】:kotlin 没有三元运算符,但你可以将if
、when
、try catch
用作expression
return if (condition) a else b
【讨论】:
在 Kotlin 中,if (…) … else …
实际上是一个三元运算符:它接受三个表达式,并返回一个值。它可能与大多数其他运算符看起来不同,但它的作用与 Java/C 风格的… ? … : …
完全相同。 (这就是 Kotlin 不需要后者的原因。)【参考方案2】:
? :
是 tenary operator,目前在 Kotlin 中不存在。关于将这个运算符添加到语言中的讨论很少,例如KT-5823 Support ternary conditional operator 'foo ? a : b' .
通常的建议是使用if
语句作为替代。
【讨论】:
【参考方案3】:Kotlin 等价物是:
if (a) b else c
这是您目前所能获得的最接近 Java 的。
【讨论】:
【参考方案4】:最好的方法是:
return when
condition -> a
else -> b
【讨论】:
为什么这是“最好的”?使用if (a) b else c
似乎是显而易见的选择。
因为b
与a
同等重要,并且处于水平定位的同一水平,从而使代码更具可读性。也更容易修改等。以上是关于是否有相当于 ?: java 运算符的 kotlin?的主要内容,如果未能解决你的问题,请参考以下文章