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

一切顺利。

为什么我必须使用临时变量?

4

2 回答 2

3

在第一种情况下,您需要在 if 表达式周围加上括号,因为(用外行的话来说) if 的优先级低于:=:

loginError := (if (loginItem.username.isEmpty) None else Some(loginItem.isUsernameValid))
于 2017-03-20T04:28:15.517 回答
0

根据SLSif子句是 anExpr但不是SimpleExpror PrefixExpr

不幸的是,在 中InfixExpr a := bb必须是PrefixExpr.

这就是为什么您必须使用临时变量的原因。

于 2017-03-20T04:32:17.070 回答