FOR LOOP多个发生器

时间:2013-02-21 18:34:38

标签: scala

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

由于

2 个答案:

答案 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