三元运算符不工作scala

时间:2017-12-06 10:45:58

标签: scala ternary-operator

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

这是完成的方法

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

引用此link我收到一个错误,无法解析符号'?',即使两个方法都返回整数

2 个答案:

答案 0 :(得分:5)

Scala没有三元运算符,例如C ++所具有的?运算符,所以无论两个operadans返回什么,都会出现错误。

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

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

答案 1 :(得分:3)

您可以使用 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"