Как используется:fin ?

#clojure

#clojure

Вопрос:

В коанах Clojure:fin используется в atoms.clj. Вот один пример:

 (def atomic-clock (atom 0))

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

Я понимаю, что:fin — это новое значение. Но почему он используется вместо number?

Я искал документацию для:fin используется и не может найти его использование, кроме как в Коанах.

Спасибо.

Ответ №1:

В Clojure двоеточие создает нечто, называемое ключевым словом или ключом:

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

Ключи используются в картах, потому что их легко проверить на равенство и преобразовать в строки. Вы можете видеть, что позже в том же файле :fin это снова используется при проверке на равенство:

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

Комментарии:

1. Так что это не что иное, как кто-то хотел, чтобы ключевое слово указывало определенное значение. Я думал, что в :fin есть что-то особенное. Спасибо.