&引用;“简单表达式的非法开始”;使用scalajs时出错:=
如果我使用&引用;“简单表达式的非法开始”;使用scalajs时出错:=,scala,syntax-error,scala.js,binding.scala,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 一切顺利
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))
根据,if子句是Expr
,而不是SimpleExpr
或PrefixExpr
不幸的是,在InfixExpr
a:=b
中,b
必须是前缀xpr
这就是为什么必须使用临时变量