2017-03-13 27 views
0

我有以下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" 
} 

但是,爲什麼我得到這個錯誤?什麼是修復?

回答

2

斯卡拉沒有三元運算符。使用if-else

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

謝謝@ZhekaKozlov(+1) - 請參閱我的更新。你的建議產生了一個新的編譯器錯誤。有任何想法嗎?再次感謝! – smeeb

+0

@smeeb對不起,你還需要放圓括號。查看我的更新。 – ZhekaKozlov