Julia 变量 disappears/changes

Julia variable disappears/changes

我有以下MWE

function f(p)
  ans = zeros(p, 2)
  return ans
end

ans = f(2)

ans

b=ans.+1.0
ans

起初,ans是正确的,但是创建b的操作覆盖了ans

julia> ans = f(2)
2×2 Matrix{Float64}:
 0.0  0.0
 0.0  0.0

julia> ans
2×2 Matrix{Float64}:
 0.0  0.0
 0.0  0.0

julia> b=ans.+1.0
2×2 Matrix{Float64}:
 1.0  1.0
 1.0  1.0

julia> ans
2×2 Matrix{Float64}:
 1.0  1.0
 1.0  1.0

这是 julia 1.6.5 的全新安装。

如果我只问 typeof(ans),同样的事情也会发生。 ans 的值本身更改为 typeof(ans) 的输出,它是一个数据类型。

julia> ans=f(2)
2×2 Matrix{Float64}:
 0.0  0.0
 0.0  0.0

julia> typeof(ans)
Matrix{Float64} (alias for Array{Float64, 2})

julia> typeof(ans)
DataType

有什么想法吗?

参见 ans 的文档字符串:

help?> ans
  ans

  A variable referring to the last computed value, automatically set at the interactive prompt.

正如您所见,Julia REPL 会在每次对表达式求值后自动覆盖 ans

简而言之,建议不要在交互式会话的全局范围内使用ans(除非要获取上次操作的结果)。