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