我正在尝试在scala中创建一个三元运算符,但实际上似乎'?'
字符无法解析
这是完成的方法
object Credit {
def getMaximumWeek(orderId: Int, locale: String): Int = {
val orderCompletedHistoryCount = Order.getOrderCompletedHistoryCount(orderId, locale);
orderCompletedHistoryCount == 0 ? 0: Order.getMaximumAllowedWeeks(orderId, locale)
}
}
引用此link ,我收到一个错误,无法解析符号'?',即使两个方法都返回整数
答案 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"