三元运算符不工作 scala

Ternary operator is not working scala

我想在 scala 中创建一个三元运算符,但实际上 '?' 字符似乎无法解析

这是完成的方法

object Credit {
  def getMaximumWeek(orderId: Int, locale: String): Int = {
    val orderCompletedHistoryCount = Order.getOrderCompletedHistoryCount(orderId, locale);
   orderCompletedHistoryCount == 0 ? 0: Order.getMaximumAllowedWeeks(orderId, locale)
  }
}

参考这个link ,我收到一个错误 connot resolve symbol '?' 即使两种方法都返回整数

Scala 没有三元运算符,例如 C++ 中的 ? 运算符,因此无论两个运算符 return.

改为使用 if-else 表达式,如下所示:

if(orderCompletedHistoryCount == 0)
    0
else
    Order.getMaximumAllowedWeeks(orderId, locale)

您可以使用 Scalaz。唯一的区别是它需要 | 符号而不是 : 符号。

import scalaz.Scalaz._

false ? "Yes" | "No" // returns No

它不仅适用于布尔值,您也可以尝试使用 Option 个对象:

None ? "Defined" | "Empty" // returns Empty

您应该将以下行添加到 build.sbt 以便使用它:

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.2.16"