【scala学习笔记】for循环及关键字yield

scala中的for循环有个独有的特性,他是有返回值的。这个与java不同
如:

val arr = (1 to 10)
val arr2 = for(i <- arr) yield i*2

但是 for循环的返回值必须要关键字 yield上场。如果没有yield,即返回为空

【scala学习笔记】for循环及关键字yield_第1张图片
代码运行截图

for循环中的圆括号内还可以加更多的条件

val filesHere = Map("java" -> 22, "scala" -> 6, "spark" -> 5)
val scalaFiles =for {  
  file <- filesHere  
  if file._1.startsWith("java")  
  if file._2 == 22
} yield file
println(scalaFiles)
【scala学习笔记】for循环及关键字yield_第2张图片
运行截图

yield 关键字的简短总结:针对每一次 for 循环的迭代, yield 会产生一个值,被循环记录下来 (内部实现上,像是一个缓冲区).当循环结束后, 会返回所有 yield 的值组成的集合.返回集合的类型与被遍历的集合类型是一致的.

你可能感兴趣的