怎么样:fin被使用?

时间:2011-11-03 17:11:36

标签: clojure

在Clojure Koans中:fin正在atoms.clj中使用。这是一个例子:

(def atomic-clock (atom 0))

  "Atomic atoms are atomic"
  (= 20 (do
          (compare-and-set! atomic-clock 100 :fin)
          @atomic-clock))

我理解:fin是新值。但为什么要用它来代替数字?

我搜索了文档:fin正在使用,除了Koans之外无法找到它的用途。

感谢。

1 个答案:

答案 0 :(得分:8)

在Clojure中,冒号会生成一个叫做关键字或键的东西:

user=> (type :xyz)
clojure.lang.Keyword

键在地图中使用,因为它们很容易检查相等性并转换为字符串。您可以看到,稍后在同一文件中,:fin再次用于检查相等性:

(= :fin (do
        (compare-and-set! __ __ __)
        @atomic-clock)))