了解下面代码如何工作的问题。我是Scala的新手,现在已经学习了两周语言。
for (i <- 1 to 3; j <- 1 to 3) print((10 * i + j) + " ")
打印11 12 13 21 22 23 31 32 33
。它是否依次分配每个值,即
i = 1
j = 0
或每次循环时都会分配值。
i = 1
j = 1
由于
答案 0 :(得分:9)
它只是j
的嵌套循环。
因此,对于i
的每个指定值,将重复j
的所有值。
for (i <- 1 to 3) {
for (j <- 1 to 3) {
print((10 * i + j) + " ")
}
}
由于for
循环扩展为foreach
,因此您的代码也相当于:
(1 to 3).foreach { i =>
(1 to 3).foreach { j =>
print((10 * i + j) + " ")
}
}
也许在这种形式下,它更容易看到。
答案 1 :(得分:1)
循环从1到3
print((10 * i + j) + " ")
相当于
val tmp = (10*i)+j //* is higher than +
print(tmp + " ")
您的代码结果:
For i=1, j=1 --> 11 i=1' j=2 --> 12 . . . . i=2, j=1 --> 21 . . i=2, j=3 --> 23 . . i=3, j=3 --> 33