Поиск…
Вступление
Атом в Clojure - это переменная, которая может быть изменена во всей вашей программе (пространство имен). Поскольку большинство типов данных в Clojure неизменяемы (или неизменяемы) - вы не можете изменить значение числа без его переопределения - атомы необходимы для программирования Clojure.
Определить атом
Чтобы определить атом, используйте обычный def
, но добавьте перед ним функцию atom
:
(def counter (atom 0))
Это создает atom
значения 0
. Атомы могут быть любого типа:
(def foo (atom "Hello"))
(def bar (atom ["W" "o" "r" "l" "d"]))
Прочитайте значение атома
Чтобы прочитать значение атома, просто поместите имя атома с помощью @
перед ним:
@counter ; => 0
Большой пример:
(def number (atom 3))
(println (inc @number))
;; This should output 4
Обновить значение атома
Есть две команды для изменения атома, swap!
и reset!
, swap!
заданы команды и изменяет атом на основе его текущего состояния. reset!
полностью изменяет значение атома, независимо от того, что было значением исходного атома:
(swap! counter inc) ; => 1
(reset! counter 0) ; => 0
Этот пример выводит первые 10 степеней 2
используя атомы:
(def count (atom 0))
(while (< @atom 10)
(swap! atom inc)
(println (Math/pow 2 @atom)))