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