0
在下面的例子:本地和区分范围规则的区别?
Fs = cell(2)
i = 1
for i = 1:2
local i # same as local i = i
Fs[i] =() -> i
end
println(Fs[1]()) # 1
println(Fs[2]()) # 2
println(i) # 1
- 难道
local i
相同local i = i
? 为什么我不能为
while
循环做同样的事情?Fs = cell(2) i = 1 while i <= 2 #LoadError: UndefVarError: i not define local i = i Fs[i] =()->i i += 1 end
但必须使用let
:
Fs = cell(2)
i = 1
while i <= 2
let i = i
Fs[i] =()->i
end
i += 1
end
println(Fs[1]()) # 1
println(Fs[2]()) # 2