元组和如果在Scala中

时间:2016-10-12 22:21:41

标签: scala

我使用以下代码收到编译时错误:

val bestModel = model
val bestEvals: List[Double] = null   

... <code, including code that initializes bestEvals> ...

(bestModel, bestEvals) = if (allAgreeBetter)
  (updatedModel, currentEvals.map {case (eval, _) => eval}.toList)
else
  (bestModel, bestEvals)

错误是(是):

Error:(203, 34) ';' expected but '=' found.
      (bestModel, bestEvals) = if (allAgreeBetter)
Error:(205, 11) ';' expected but 'else' found.
      else

我错过了什么?如果我拿出这个语句,代码编译并运行正常,所以问题特别出现在这个语句中。

1 个答案:

答案 0 :(得分:1)

正如前面提到的here,您不能将元组分配给预先存在的引用 - 这是Scala不支持的内容。

唯一可行的类似模式是:

var (bestModel, bestEvals) = if (allAgreeBetter) ...

但是,如果预先声明bestModelbestEvals,那么您将重新声明它们(而不是为它们分配新值)。

希望这有帮助!

干杯。