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.html