W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Atoms是Clojure中的一種數(shù)據(jù)類型,它提供了一種管理共享,同步,獨立狀態(tài)的方法。 Atoms就像任何其他編程語言中的任何引用類型。 Atoms的主要用途是保存Clojure的不可變數(shù)據(jù)結(jié)構(gòu)。 Atoms保持的值隨swap! 方法改變而改變。
內(nèi)部,swap!讀取當(dāng)前值,對其應(yīng)用函數(shù),并嘗試對其進行比較和設(shè)置。由于另一個線程可能在中間時間中更改了值,因此可能必須重試,并在自旋循環(huán)中執(zhí)行。 凈效果是該值將始終是將所提供的函數(shù)應(yīng)用于當(dāng)前值的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的值設(shè)置為新值,而不考慮當(dāng)前值。 |
compare-and-set! | 當(dāng)且僅當(dāng)原子的當(dāng)前值與原子保持的舊值相同時,以原子方式將atom的值設(shè)置為新值。 返回true如果設(shè)置發(fā)生,否則返回false。 |
swap! | 根據(jù)特定的函數(shù),用一個新的Atoms交換原值。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: