2017-03-20 24 views
1

如果我使用「簡單表達的非法啓動」 錯誤時使用:=

loginError := if (loginItem.username.isEmpty) None else Some(loginItem.isUsernameValid) 

編譯器說:

illegal start of simple expression 

時改爲

val err = if (loginItem.username.isEmpty) None else Some(loginItem.isUsernameValid) 
loginError := err 

一切順利。

爲什麼我必須使用臨時變量?

回答

3

你需要括號圍繞在第一種情況下你如果表現,因爲(通俗地說)的,如果有比:=較低的優先級:

loginError := (if (loginItem.username.isEmpty) None else Some(loginItem.isUsernameValid)) 
+0

謝謝,這工作得很好:) – hailong

0

根據SLS,一個if條款是Expr,但不是SimpleExprPrefixExpr

不幸的是,在InfixExpra := b,b必須是PrefixExpr

這就是爲什麼你必須使用一個臨時變量。

相關問題