如何做 Scala 等价于这个 Java 代码:
int i = 0;
for(String x: xs) {
for(String y : ys) {
foo(x, y, i);
i+=10;
}
}
如何做 Scala 等价于这个 Java 代码:
int i = 0;
for(String x: xs) {
for(String y : ys) {
foo(x, y, i);
i+=10;
}
}
有多种方法可以做到:
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
}
}
你可以试试这个(没有可变变量):
for(x <- xs.zipWithIndex;y <- ys.zipWithIndex) {
foo(x._1, y._1, x._2*y._2*10)
}
你基本上可以稍微改变一下语法。
var i = 0
for(x <- xs) {
for(y <- ys) {
foo(x, y, i)
i = i+10
}
}
for (x <- xs; y <- ys; i <- 1 to 10) foo(x, y, i)