Clojure-atoms

提供:Dev Guides
移動先:案内検索

Clojure-アトム

*Atoms* は、共有、同期、独立状態を管理する方法を提供するClojureのデータ型です。 アトムは、他のプログラミング言語の参照型とまったく同じです。 アトムの主な用途は、Clojureの不変のデータ構造を保持することです。 アトムが保持する値は、* swap!で変更されます。 方法*。

内部的には、スワップ! 現在の値を読み取り、関数を適用して、比較と設定を試みます。 別のスレッドが介入時間内に値を変更した可能性があるため、再試行する必要があり、スピンループで変更します。 最終的な効果は、値が常に現在の値に提供された関数をアトミックに適用した結果になることです。

原子はatomメソッドの助けを借りて作成されます。 同じ例が次のプログラムに示されています。

(ns clojure.examples.example
   (:gen-class))
(defn example []
   (def myatom (atom 1))
   (println @myatom))
(example)

出力

上記のプログラムは次の結果を生成します。

1

アトムの値には、@記号を使用してアクセスします。 Clojureには、原子に対して実行できる操作がいくつかあります。 操作は次のとおりです。

Sr.No. Operations & Description
1

reset!

現在の値に関係なく、アトムの値を新しい値に設定します。

2

compare-and-set!

アトムの現在の値がアトムによって保持されている古い値と同一である場合にのみ、アトムの値を新しい値に原子的に設定します。 設定された場合はtrueを返し、そうでない場合はfalseを返します。

3

swap!

特定の関数に基づいて、原子の値を新しい原子と原子的に交換します。