Clojure - commute



commute 也用於更改引用型別的值,就像 alter 和 ref-set 一樣。唯一的區別是這也需要放在 ‘dosync’ 塊內。但是,在不需要知道哪個呼叫程序實際更改了引用型別的值時,可以使用它。commute 也使用函式來更改引用變數的值。

語法

以下是語法。

(commute refname fun)

引數 − ‘refname’ 是儲存引用值的變數的名稱。‘fun’ 是用於更改引用型別值的函式。

返回值 − 引用及其對應的新的值。

示例

以下程式顯示瞭如何使用此方法的示例。

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def counter (ref 0))
   
   (defn change [counter]
      (dosync
         (commute counter inc)))
   (change counter)
   (println @counter)
   
   (change counter)
   (println @counter))
(Example)

輸出

上述程式產生以下輸出。

1
2
clojure_reference_values.htm
廣告