【问题标题】:Changing variable in loop [Julia]在循环中更改变量 [Julia]
【发布时间】:2018-08-18 14:48:27
【问题描述】:

在 Julia 1.0 中,我尝试按照以下方式实现 for 循环:

while t1 < 2*tmax
    tcol = rand()
    t1 = t0 + tcol

    t0 = t1
    println(t0)
end

但是,我收到 t1 和 t0 未定义的错误。如果我在他们面前放一个“全球”,它会再次起作用。有没有比在我的代码中放置全局变量更好的方法来处理这个问题?

【问题讨论】:

    标签: julia


    【解决方案1】:

    问题的原因是您在全局范围内运行代码(可能在 Julia REPL 中)。在这种情况下,您将不得不使用global,如此处https://docs.julialang.org/en/latest/manual/variables-and-scoping/ 所述。

    我可以推荐的最简单的方法是将您的代码包装在 let 块中,如下所示:

    let t1=0.0, t0=0.0, tmax=2.0
        while t1 < 2*tmax
            tcol = rand()
            t1 = t0 + tcol
    
            t0 = t1
            println(t0)
        end
        t0, t1
    end
    

    这种方式let 创建了一个本地范围,如果你在全局范围内运行这个块(例如在 Julia REPL 中)一切正常。请注意,我将t0, t1 放在末尾以使let 块返回一个包含t0t1 值的元组

    您也可以将代码包装在一个函数中:

    function myfun(t1, t0, tmax)
        while t1 < 2*tmax
            tcol = rand()
            t1 = t0 + tcol
    
            t0 = t1
            println(t0)
        end
        t0, t1
    end
    

    然后使用适当的参数调用myfun 以获得相同的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 2018-01-12
      相关资源
      最近更新 更多