在斯卡拉,如果我有一个嵌套的for循环,我想在每一个执行不同的事情。如何在scala中仅执行outer for循环?
for (int i = 0; i<5; i++) {
System.out.println(i); //do something for just i
for(int j = 0; j<5; j++) {
System.out.println(i+j); //do something for both i and j
}
}
但Scala代码:
for {i<-0 to 5
j<- 0 to 5} yield { print(i); print(i+j)}
给出了输出:
0
(0,0)
0
(0,1)
0
(0,2)
0
(0,3)
0
(0,4)
0
(0,5)
,但我希望它是:
0
(0,0)
(0,1)
(0,2)
(0,3)
(0,4)
(0,5)
有没有办法,只每打印和i+j
每个i
和j
在ONE for循环?
'如果(j == 0)打印(我);打印(i + j);'..不太干净,作为副作用。为什么不只是一个嵌套循环?您仍然可以使用该范围的“x < - a to b”语法。 – user2864740
这是我的问题的抽象表示。基本上我想遍历两件事,在外层循环和内层循环中做一些事情。@ user2864740 – rileyss
只需使用两个for-loops。另外,'for {...} {...}'是for-loop。 '{...} yield {...}'是理解。他们是非常不同的东西。 –