如何使用多语句的收益率?

gre*_*man 1 for-loop scala yield

该代码仅用于说明目的,即它是一个不是真实代码的示例.

我试过这个:

val results = for(i <- 1 to 20)
{
  val x = i+1
  println(x)
  yield x
}
Run Code Online (Sandbox Code Playgroud)

还有这个

val results = for {i <- 1 to 20;
  val x = i+1;
  println(x)
}
  yield x
Run Code Online (Sandbox Code Playgroud)

但这一切都不起作用 - 我需要一个生成器,定义和一个声明 - 这是否可以用收益率来做到这一点?如果是,那么正确的语法是什么?

Jam*_*mil 8

希望这会让你开始:

  val result = for (i <- 1 to 10 if i%2==0) yield {
     println(i); 
     i
  }
Run Code Online (Sandbox Code Playgroud)

这相当于

 (1 to 10).filter(_%2==0).map(x => { println(x); x } )
Run Code Online (Sandbox Code Playgroud)