2017-03-20 23 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

这就是为什么你必须使用一个临时变量。

相关问题