2

理解以下代码如何工作的问题。我是 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

谢谢

4

2 回答 2

9

它只是 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) + " ")
  }
}

也许在这种形式下,更容易看到。

于 2013-02-21T18:39:19.407 回答
1

循环是从 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
于 2013-02-21T18:51:12.730 回答