Dies kann eine sehr neue Frage sein, aber ich habe die Antwort nicht gefunden. Ich muss zum Beispiel eine Liste speichern und später durch eine andere unter dem gleichen Zeiger ersetzen.Wie kann ich den Wert einer Variablen in OCaml speichern und ändern?
4
A
Antwort
9
Es kann über references erfolgen:
let fact n =
let result = ref 1 in (* initialize an int ref *)
for i = 2 to n do
result := i * !result (* reassign an int ref *)
done;
!result
Sie Referenzen nicht oft sehen sehr, weil Sie die gleiche Sache mit unveränderlichen Werte innerhalb Rekursion oder höherwertigen Funktionen tun können:
let fact n =
let rec loop i acc =
if i > n then acc
else loop (i+1) (i*acc) in
loop 2 1
Nebenwirkungsfreie Lösungen werden bevorzugt, da sie einfacher zu begründen und einfacher zu gewährleisten sind.
Danke. Kannst du mir die Bedeutung von Ref 0 erklären? – EBM
Siehe den Link, auf den ich mich in meiner Antwort beziehe. Grundsätzlich ist 'ref 0 'ein Datensatz' {veränderbarer Inhalt: int} 'mit' Inhalt' initialisiert durch '0' und' Inhalt' könnte später neu zugewiesen werden. – pad