怎么样:fin被使用?

oct*_*bus 4 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))
Run Code Online (Sandbox Code Playgroud)

我理解:fin是新的价值.但为什么要使用而不是数字呢?

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

谢谢.

Mat*_*ick 8

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

user=> (type :xyz)
clojure.lang.Keyword
Run Code Online (Sandbox Code Playgroud)

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

(= :fin (do
        (compare-and-set! __ __ __)
        @atomic-clock)))
Run Code Online (Sandbox Code Playgroud)