1

如何做 Scala 等价于这个 Java 代码:

int i = 0;
for(String x: xs) {
    for(String y : ys) {
        foo(x, y, i);
        i+=10;
    }
}
4

4 回答 4

5

有多种方法可以做到:

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

要在不使用 external 的情况下在功能上做到这一点i

xs.foldLeft(0){(a:Int,b) =>
   ys.foldLeft(a){(c:Int, p) =>
     foo(b,p,a)
     c+10
   }
}
于 2013-05-01T12:47:59.333 回答
0

你可以试试这个(没有可变变量):

  for(x <- xs.zipWithIndex;y <- ys.zipWithIndex) {
    foo(x._1, y._1, x._2*y._2*10)
  }
于 2013-05-01T12:58:56.490 回答
0

你基本上可以稍微改变一下语法。

 var i = 0
    for(x <- xs) {
        for(y <- ys) {
            foo(x, y, i)
            i = i+10
        }
    }
于 2013-05-01T12:59:33.880 回答
0
  for (x <- xs; y <- ys; i <- 1 to 10) foo(x, y, i)
于 2013-05-02T05:23:03.960 回答