下面的代码打印 2,1
val n = 3
val i = 3
for {
i <- 1 until n
j <- 1 until i
} println(i+","+j)
如果不打印:
1,1
1,2
1,3
2,1
2,2
2,3
3,1
3,2
3,3
我认为j <- 1 until i
在外循环的内循环中,但根据输出显然不是这种情况?可以解释上述循环的行为吗?
下面的代码打印 2,1
val n = 3
val i = 3
for {
i <- 1 until n
j <- 1 until i
} println(i+","+j)
如果不打印:
1,1
1,2
1,3
2,1
2,2
2,3
3,1
3,2
3,3
我认为j <- 1 until i
在外循环的内循环中,但根据输出显然不是这种情况?可以解释上述循环的行为吗?
i
inprintln(i+","+j)
指的是 i 绑定的不是i <- 1 until n
顶级定义val i = 3
要注意的另一件事1 until n
是范围1..n-1
,而不是1..n
. to
如果要包含上限,则应使用。
第二次迭代将打印 2,1 因为 x = 2 和y <- 1 直到 2
╔═══════════╦══════════╦═══════════╦════════════════╗
║ Cycle ║ x ║ y ║ print ║
╠═══════════╬══════════╬═══════════╬════════════════╣
║ 1 ║ 1 ║ 1 ║ omit iteration ║
╠═══════════╬══════════╬═══════════╬════════════════╣
║ 2 ║ 2 ║ 1 ║ (2,1 ║
╚═══════════╩══════════╩═══════════╩════════════════╝