Scala if else 枚举赋值运算符失败
Scala if else assignment operator with enum is failing
我有以下 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"
}
但为什么会出现此错误?解决方法是什么?
Scala 中没有三元运算符。使用 if-else
:
val qualifier : String = if (runMode eq RunMode.CLIENT_MODE) "whistle" else "feather"
我有以下 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"
}
但为什么会出现此错误?解决方法是什么?
Scala 中没有三元运算符。使用 if-else
:
val qualifier : String = if (runMode eq RunMode.CLIENT_MODE) "whistle" else "feather"