小编L. *_*ann的帖子

在 Julia 中,为什么局部作用域中的“if false”语句可以修改函数定义?

在 Julia 1.4.1 中,如果我在全局范围内定义一个函数,“if false”语句之后的修改不会影响它,正如预期的那样:

test()=0
if false
  test()=1
end

println(test())
Run Code Online (Sandbox Code Playgroud)

这应该打印“0”。但是,当我将此代码包含在本地范围内时,行为会发生变化:

function main()
  test()=0
  if false
    test()=1
  end

  println(test())
end

main()
Run Code Online (Sandbox Code Playgroud)

现在打印出我没想到的“1”。如果我将“测试”更改为数组或浮点数,我不会按预期观察到任何修改,即问题不会发生。为什么 Julia 对函数有这种行为?

function scoping julia

10
推荐指数
1
解决办法
77
查看次数

标签 统计

function ×1

julia ×1

scoping ×1