我有以下代码片段,常规的for循环工作正常。 但是for理解会引发错误
println("Using for loop")
for( (key, value) <- orec.groupBy(x => x.continent) )
{
println(key + value.length )
}
println("Using for comprehension")
for{
(key, value) <- orec.groupBy(x => x.continent)
println(key + value.length )
} yield (key,value)
错误消息是
Error:(84, 5) '<-' expected but '}' found.
} yield (key,value)
我不明白代码有什么问题。请帮助解决问题
答案 0 :(得分:6)
println
不能在for
理解范围内工作。应该是下面的样子。
for {
(key, value) <- orec.groupBy(x => x.continent)
_ = println(key + value.length )
} yield (key,value)
用于理解的A应该始终在其第一条语句中以<-开头,该语句为随后的其余表达式创建上下文。
用于理解的所有<-
都flatMap
期望最后一个map
。
您应使用_ =
来执行与理解所建立的初始上下文不符的副作用任务。
我推荐这个tutorial。它更优雅地解释了理解。
答案 1 :(得分:2)
您不能在a内包含类似的打印品以进行理解,可以像这样使用它们:
for{
(key, value) <- orec.groupBy(x => x.continent)
} yield println(key + value.length )