运行以下脚本(通过 REPL
include("tmp.jl")
)
for n in 1:10
println(n)
if n > 3
break
end
end
println(n)
产生错误
julia> include("tmp.jl")
1
2
3
4
ERROR: LoadError: UndefVarError: `n` not defined
Stacktrace:
[1] top-level scope
@ ~/Documents/GMT_science/Julia/tmp.jl:7
[2] include(fname::String)
@ Base.MainInclude ./client.jl:478
[3] top-level scope
@ REPL[161]:1
in expression starting at /home/puller/Documents/GMT_science/Julia/tmp.jl:7
我想原因是
n
是一个局部变量,它不存在于循环范围之外。更新
一种解决方法是定义一个全局变量来保存迭代索引的值:
let m = 0
for n in 1:10
println(n)
m = n
if n > 3
break
end
end
println(m)
end
或使用
while
循环:
let n = 1
while n < 4
println(n)
n += 1
end
println(n)
end
你想要
outer
:
julia> let n = 99.9
for outer n in 1:10
println(n)
if n > 3
break
end
end
println("finally: ", n)
end
1
2
3
4
finally: 4