反求理解

syn*_*pse 1 for-loop scala for-comprehension

如何做Scala相当于这个Java代码:

int i = 0;
for(String x: xs) {
    for(String y : ys) {
        foo(x, y, i);
        i+=10;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jat*_*tin 5

有多种方法可以做到:

var i = 0                                 
for(x <- xs;y <- ys) {
  foo(x,y,i)
  i = (i+10)
}
Run Code Online (Sandbox Code Playgroud)

在不使用外部功能的情况下执行此操作i:

xs.foldLeft(0){(a:Int,b) =>
   ys.foldLeft(a){(c:Int, p) =>
     foo(b,p,a)
     c+10
   }
}
Run Code Online (Sandbox Code Playgroud)