"简单表达的非法开始"使用时scalajs中的错误:=

时间:2017-03-20 03:12:33

标签: scala syntax-error scala.js binding.scala

如果我使用

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
一切都很顺利。

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

2 个答案:

答案 0 :(得分:3)

在第一种情况下,你需要在if表达式周围使用括号,因为(在外行人的条款中)if的优先级低于:=

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

答案 1 :(得分:0)

根据SLSif条款是Expr,但不是SimpleExprPrefixExpr

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

这就是你必须使用临时变量的原因。