3 votes

La variable Julia disparaît/change

J'ai le MWE suivant

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

ans = f(2)

ans

b=ans.+1.0
ans

Au début, ans est correcte, mais l'opération créant b écrase 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

C'est une nouvelle installation de julia 1.6.5.

La même chose se produit si je demande juste typeof(ans) . La valeur de ans lui-même change à la sortie de typeof(ans) qui est un 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

Des idées ?

5voto

Bogumił Kamiński Points 15639

Voir la docstring de ans :

help?> ans
  ans

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

Donc, comme vous pouvez le voir, Julia REPL écrase automatiquement ans après chaque évaluation d'une expression.

En résumé, il est recommandé de ne pas utiliser ans dans une portée globale dans les sessions interactives (sauf pour obtenir le résultat de la dernière opération).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X