Scala用于Map的理解性抛出错误

sta*_*106 1 scala for-comprehension

我有以下代码片段,常规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)
Run Code Online (Sandbox Code Playgroud)

错误消息是

Error:(84, 5) '<-' expected but '}' found.
    } yield (key,value)
Run Code Online (Sandbox Code Playgroud)

我不明白代码有什么问题。请协助解决问题

Raj*_*jan 6

println那样无法在for理解范围内工作。它应该像下面这样。

for {
  (key, value) <- orec.groupBy(x => x.continent)
  _ = println(key + value.length )
} yield (key,value)
Run Code Online (Sandbox Code Playgroud)
  1. for理解应该始终在其第一条语句中以<-开头,该语句为随后的其余表达式创建上下文。

  2. 所有<-内心的理解都flatMap期待最后一个map

您应该将_ =副作用用于与理解所建立的初始上下文不符的任务。

我推荐本教程。它更优雅地解释了理解。