Ich habe ein seltsames Problem mit Julia, arbeiten mit DataArrays.DataArray.Lokaler Bereich und DataArrays.DataArray
Ich versuche, mein Problem mit einem Beispiel (vereinfacht) von der offiziellen Dokumentation zu beschreiben:
x = 1
function bar()
x = 10 # local
println(x) # 10
return 1
end
bar();
println(x) # 1
Diese Funktion des lokalen Wert von x ändert, aber er ändert nicht seinen globalen Wert.
Nun lassen Sie uns sagen, ich habe folgendes:
using DataFrames;
x = @data([1 2 3 4 5 6 7 8 9 10]);
function bar()
x[1,1] = 1000000 # local
println(x[1, 1]) # 1000000
return 1
end
bar();
println(x[1, 1]) # it should be 1, but it is 1000000
Könnten Sie bitte erklären, warum dies der Fall ist und wie kann ich Julia normal verhalten lassen?
In Ordnung, ich habe es. Ich bin immer noch in Zweifeln, da ich das gleiche Problem habe, auch wenn ich Bar als Argument akzeptiere. In diesem Fall sollte die Funktionsleiste eine lokale Version von x haben, oder? Warum greift es immer noch auf das globale x zu? – merch
nein, Funktionen können ihre Argumente mutieren. Wenn du explizit eine lokale Version erstellen willst, dann füge lokal local hinzu, also 'local x =" was auch immer "' –
Ok, danke für deine Hilfe! – merch