理解以下代码如何工作的问题。我是 Scala 的新手,现在已经学习了 2 周的语言。
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
谢谢
理解以下代码如何工作的问题。我是 Scala 的新手,现在已经学习了 2 周的语言。
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
谢谢
它只是 for 的嵌套循环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 到 3
print((10 * i + j) + " ")
相当于
val tmp = (10*i)+j //* is higher than +
print(tmp + " ")
您的代码结果:
对于 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