我有下面的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这是新安装的朱莉娅1.6.5。
如果我只问typeof(ans),也会发生同样的事情。ans本身的值更改为typeof(ans)的输出,即DataType。
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有什么想法吗?
发布于 2022-03-25 14:17:11
参见ans的docstring
help?> ans
ans
A variable referring to the last computed value, automatically set at the interactive prompt.因此,正如您所看到的,Julia在每个表达式的计算之后都会自动覆盖ans。
简而言之,建议不要在交互式会话的全局范围内使用ans (除了最后一次操作的结果)。
https://stackoverflow.com/questions/71618142
复制相似问题