>如果我使用
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
一切都很顺利。
为什么我必须使用临时变量?
在第
一种情况下,您需要在if表达式周围加上括号,因为(通俗地说(if的优先级低于:=
:
loginError := (if (loginItem.username.isEmpty) None else Some(loginItem.isUsernameValid))
根据 SLS,if
子句是Expr
,但不是SimpleExpr
或PrefixExpr
。
不幸的是,在InfixExpr
a := b
,b
一定是PrefixExpr
。
这就是为什么你必须使用临时变量。