サーチ…
前書き
Clojureのアトムは、プログラム全体(名前空間)で変更可能な変数です。 Clojureのほとんどのデータ型は不変(または変更不可能)であるため、再定義することなく数値の値を変更することはできません。Clojureプログラミングでは原子が不可欠です。
アトムを定義する
アトムを定義するには、通常のdef
使用しますが、その前にatom
関数を追加します。
(def counter (atom 0))
これにより、値0
atom
が作成されます。原子の種類は問わない。
(def foo (atom "Hello"))
(def bar (atom ["W" "o" "r" "l" "d"]))
原子の値を読み込む
アトムの値を読み取るには、アトムの前に@
付けてアトムの名前を入れます。
@counter ; => 0
より大きな例:
(def number (atom 3))
(println (inc @number))
;; This should output 4
アトムの値を更新する
原子をswap!
するには2つのコマンドがありますswap!
reset!
。 swap!
コマンドが与えられ、現在の状態に基づいてアトムが変更されます。 reset!
元の原子の値が何であっても、原子の値を完全に変更します。
(swap! counter inc) ; => 1
(reset! counter 0) ; => 0
この例では、最初の10のパワー出力2
使用原子:
(def count (atom 0))
(while (< @atom 10)
(swap! atom inc)
(println (Math/pow 2 @atom)))
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow