#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 есть что-то особенное. Спасибо.