scala中的for循环有个独有的特性,他是有返回值的。这个与java不同
如:
val arr = (1 to 10)
val arr2 = for(i <- arr) yield i*2
但是 for循环的返回值必须要关键字 yield上场。如果没有yield,即返回为空
代码运行截图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)
运行截图
yield 关键字的简短总结:针对每一次 for 循环的迭代, yield 会产生一个值,被循环记录下来 (内部实现上,像是一个缓冲区).当循环结束后, 会返回所有 yield 的值组成的集合.返回集合的类型与被遍历的集合类型是一致的.
网友评论