【问题标题】:Scala if else assignment operator with enum is failingScala if else 带有枚举的赋值运算符失败
【发布时间】:2017-08-03 19:17:59
【问题描述】:

我有以下 Scala 代码:

// RunMode.scala
object RunMode extends Enumeration {
  val CLIENT_MODE = Value("CLIENT")
  val SERVER_MODE = Value("SERVER")
}

// Driver.scala
object MyApp extends App {
  // Don't worry about this too much, the point is we get a valid
  // instance of RunMode to work with
  val runMode : RunMode = getRunMode(args)

  val qualifier : String = if runMode.eq(RunMode.CLIENT_MODE) "whistle" else "feather"

  // rest of main omitted for brevity
}

运行时,我在三元运算符上收到以下编译器错误:

/Users/myuser/myapp/src/main/com/me/myapp/Driver.scala:22: '(' expected but identifier found.
  val qualifier : String = if runMode.eq(RunMode.CLIENT_MODE) "whistle" else "feather"

显然期望的行为可以重写为:

var qualifier : String = null
if(runMode.eq(RunMode.CLIENT_MODE)) {
  qualifier = "whistle"
} else {
  qualifier = "feather"
}

但是为什么我会收到这个错误?解决方法是什么?

【问题讨论】:

    标签: string scala ternary-operator


    【解决方案1】:

    Scala 中没有三元运算符。使用if-else:

    val qualifier : String = if (runMode eq RunMode.CLIENT_MODE) "whistle" else "feather"
    

    【讨论】:

    • 感谢@ZhekaKozlov (+1) - 请查看我的更新。您的建议产生了一个新的编译器错误。有任何想法吗?再次感谢!
    • @smeeb 抱歉,您还需要加上括号。查看我的更新。
    猜你喜欢
    • 2016-01-29
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2023-03-31
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多