循环scala内部的if语句



我是scala的新手,我正在努力学习它。我遇到了一件非常简单的事情,我无法理解。我只是想在for循环中检查当前项是否存在于映射中,然后使用该值,否则用函数计算它。这应该很简单,但来自python,我不明白错误在哪里。

val predictions = for (review <- testValuesAsList;
if (storage.contains("review")){prediction = mymap("review")}
else {prediction = computeItemAvgRat(review._2, trainValuesAsList)}
) yield (review._3, prediction)
return predictions

Scala中没有for循环,只有for理解;它们只是mapflatMapwithFilter调用的糖语法
这就是导致代码失败的原因。

IMHO,for语法很少比显式调用组合子更好。

val predictions = testValuesAsList.map {
case (_, b, c) => // I don't know what would be proper names for the variables.
val prediction = myMap.getOrElse(
key = "review",
default = computeItemAvgRat(b, trainValuesAsList)
)
c -> prediction
}

最新更新