是否有相当于 ?: 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 没有三元运算符,但你可以将ifwhentry 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 似乎是显而易见的选择。 因为ba 同等重要,并且处于水平定位的同一水平,从而使代码更具可读性。也更容易修改等。

以上是关于是否有相当于 ?: java 运算符的 kotlin?的主要内容,如果未能解决你的问题,请参考以下文章

java中的instanceof

instanceof操作符

instanceof是啥意思

java中这个符号“=”是啥意思?

instanceof的用法

对比Java学Kotlinobject 关键字