"Недопустимое начало простого выражения" в scalajs при использовании:=
Если я использую
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 ответа
Вам нужно заключить в круглые скобки выражение if в первом случае, потому что (в терминах непрофессионала) приоритет if имеет более низкий приоритет, чем :=
:
loginError := (if (loginItem.username.isEmpty) None else Some(loginItem.isUsernameValid))
Согласно SLS, if
пункт является Expr
но не SimpleExpr
или же PrefixExpr
,
К сожалению, в InfixExpr
a := b
, b
должен быть PrefixExpr
,
Вот почему вы должны использовать временную переменную.