Clojure-アトム
AtomsはClojureのデータ型であり、共有、同期、独立した状態を管理する方法を提供します。アトムは、他のプログラミング言語の参照型とまったく同じです。アトムの主な用途は、Clojureの不変のデータ構造を保持することです。原子が保持する値は、swap! method。
内部的には、交換してください!現在の値を読み取り、関数を適用して、比較と設定を試みます。別のスレッドがその間に値を変更した可能性があるため、再試行が必要になる場合があり、スピンループで再試行します。正味の効果は、値が常に、提供された関数を現在の値にアトミックに適用した結果になるということです。
例
アトムは、アトムメソッドを使用して作成されます。同じ例を次のプログラムに示します。
(ns clojure.examples.example
(:gen-class))
(defn example []
(def myatom (atom 1))
(println @myatom))
(example)
出力
上記のプログラムは次の結果を生成します。
1
アトムの値には、@記号を使用してアクセスします。Clojureには、アトムに対して実行できるいくつかの操作があります。以下は操作です。
シニア番号 | 操作と説明 |
---|---|
1 | リセット! 現在の値に関係なく、atomの値を新しい値に設定します。 |
2 | 比較して設定してください! アトムの現在の値がアトムが保持している古い値と同じである場合にのみ、アトムの値をアトミックに新しい値に設定します。セットが発生した場合はtrueを返し、それ以外の場合はfalseを返します。 |
3 | スワップ! 特定の関数に基づいて、アトムの値を新しい値とアトミックに交換します。 |