Julia中for循环提前终止时如何获取执行迭代次数?
Julia中获取提前终止的for循环的迭代次数
问题重现
将以下代码保存为tmp.jl,通过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
核心原因是n是for循环的局部变量,循环终止后无法在外部访问。当循环的退出条件无法预先确定时,需要获取for循环实际执行的迭代次数。
解决方案
1. 用let块定义外部变量保存迭代索引
在let块中声明一个变量,每次循环时更新它的值,确保循环结束后仍能访问该变量:
let m = 0 for n in 1:10 println(n) m = n if n > 3 break end end println(m) end
2. 改用while循环
手动控制迭代变量,使用while循环替代for循环,循环结束后迭代变量可直接访问:
let n = 1 while n < 4 println(n) n += 1 end println(n) end
内容的提问来源于stack exchange,提问作者Roger V.
相关产品推荐
相关产品推荐

