【问题标题】:Is there an kotlin equivalent of ?: java operator?是否有相当于 ?: java 运算符的 kotlin?
【发布时间】:2020-06-03 22:08:36
【问题描述】:

这里是不情愿的 kotlin 新手。

有没有 kotlin 等价于 ?:java 运算符?

我尝试在谷歌上搜索。大多数结果都在谈论 ?: kotlin 中的(elvis 运算符)。

正在寻找一种在 kotlin 中编写此代码的方法:

//java example
//return condition ? a : b;

【问题讨论】:

标签: kotlin 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 同等重要,并且处于水平定位的同一水平,从而使代码更具可读性。也更容易修改等。
      猜你喜欢
      • 2019-06-17
      • 2021-08-06
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 2014-02-02
      相关资源
      最近更新 更多