Поиск…


Вступление

Атом в 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)))


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow