【发布时间】:2018-09-13 12:50:29
【问题描述】:
我正在尝试更改 for 循环中的变量,该循环位于 while 循环中。我知道 for 循环中变量的范围默认为 local,因此我在要更改的变量前面放了一个 global。这适用于i,但不适用于turn。
当我在 for 循环中在 turn 前面添加 global 时,出现以下错误:
错误:LoadError:语法:
global turn:turn 是其封闭范围内的局部变量
i = 0
while(i <= 3)
global i += 1
turn = 0
for j = 1:2
turn += 1 # if I add a global in front of turn I get an error message
println("Turn: ", turn)
end
end
结果是:
Turn: 1
Turn: 2
Turn: 1
Turn: 2
Turn: 1
Turn: 2
Turn: 1
Turn: 2
但我想要的是:
Turn: 1
Turn: 2
Turn: 3
Turn: 4
Turn: 5
Turn: 6
Turn: 7
Turn: 8
如何在嵌套的 for 循环中更改 turn?
【问题讨论】:
-
如果你想使用
Turn来计算内部for-loop,不应该在while-loop之外定义吗? -
没错。不过,我不完全明白为什么。
-
因为 ‘turn=0’ 在 while 循环中,所以在运行内部 for 循环之前,您实际上每次都将 LOCAL 变量 ‘turn’ 重置为 0。请注意,没有预定义的全局变量“turn”,这就是错误所抱怨的;)
-
感谢您的解释!