Clojure Atoms

2018-12-24 11:42 更新

Atoms是Clojure中的一種數(shù)據(jù)類型,它提供了一種管理共享,同步,獨立狀態(tài)的方法。 Atoms就像任何其他編程語言中的任何引用類型。 Atoms的主要用途是保存Clojure的不可變數(shù)據(jù)結(jié)構(gòu)。 Atoms保持的值隨swap! 方法改變而改變。

內(nèi)部,swap!讀取當前值,對其應用函數(shù),并嘗試對其進行比較和設置。由于另一個線程可能在中間時間中更改了值,因此可能必須重試,并在自旋循環(huán)中執(zhí)行。 凈效果是該值將始終是將所提供的函數(shù)應用于當前值的Atoms結(jié)果。

Atoms是在atom方法的幫助下創(chuàng)建的。 以下程序中顯示了相同的示例。

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

輸出

以上示例輸出以下結(jié)果:

1

atom的值通過使用@符號訪問。 Clojure有一些可以對原子執(zhí)行的操作。 以下是操作。

S.No.方法和說明
reset!將atom的值設置為新值,而不考慮當前值。
compare-and-set!當且僅當原子的當前值與原子保持的舊值相同時,以原子方式將atom的值設置為新值。 返回true如果設置發(fā)生,否則返回false。
swap!根據(jù)特定的函數(shù),用一個新的Atoms交換原值。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號