4
これは非常に初心者の質問かもしれませんが、答えは見つかりませんでした。 リストを保存しておき、後で別のリストに置き換える必要があります。OCamlで変数の値を保存して変更するにはどうすればよいですか?
これは非常に初心者の質問かもしれませんが、答えは見つかりませんでした。 リストを保存しておき、後で別のリストに置き換える必要があります。OCamlで変数の値を保存して変更するにはどうすればよいですか?
それはreferencesを介して行うことができます。
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
あなたは再帰または高次関数の内部不変の値を使用して同じことを行うことができますので、あなたは非常に頻繁に参照が表示されていない。
副作用のない解決策は、正当性を保証することがより容易であり、正当性を保証することがより容易であるため、好ましい。
ありがとうございました。 ref 0の意味を教えてください。 – EBM
私の答えで参照するリンクを参照してください。基本的に 'ref 0'はレコード' {可変内容:int} 'で、' contents'は '0'で初期化され、' contents'は後で再割り当てすることができます。 – pad