我们先看下scala的 for循环骚操作:
scala> for (i <- 1 to 3; j <-1 to 3 if i!=j )
println(s"i=$i,j=$j,i+j=${i+j}")
i=1,j=2,i+j=3
i=1,j=3,i+j=4
i=2,j=1,i+j=3
i=2,j=3,i+j=5
i=3,j=1,i+j=4
i=3,j=2,i+j=5
for循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。Scala中for循环是有返回值的。如果被循环的是Map,返回的就是Map,被循环的是List,返回的就是List,以此类推。
例1:
scala> for (i <- 1 to 5) yield i
res1: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5)
例2:
scala> for (i <- 1 to 5) yield i * 2
res2: scala.collection.immutable.Indexe