Julia 中 for 循环执行的迭代次数

问题描述 投票:0回答:1

运行以下脚本(通过 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
loops for-loop julia
1个回答
0
投票

你想要

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
© www.soinside.com 2019 - 2024. All rights reserved.