在 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 对函数有这种行为?