Атомы — это тип данных в Clojure, который предоставляет способ управления общим, синхронным, независимым состоянием. Атом похож на любой ссылочный тип в любом другом языке программирования. Основное использование атома — хранение неизменяемых структур данных Clojure. Значение, удерживаемое атомом, изменяется со свопом! метод .
Внутренне поменяйся! читает текущее значение, применяет к нему функцию и пытается сравнить и установить его. Поскольку другой поток мог изменить значение за прошедшее время, ему, возможно, придется повторить попытку, и это происходит в цикле вращения. Чистый эффект состоит в том, что значение всегда будет результатом применения предоставленной функции к текущему значению атомарно.
пример
Атомы создаются с помощью метода атома. Пример того же показан в следующей программе.
(ns clojure.examples.example (:gen-class)) (defn example [] (def myatom (atom 1)) (println @myatom)) (example)
Выход
Вышеуказанная программа дает следующий результат.
1
Доступ к значению atom осуществляется с помощью символа @. Clojure имеет несколько операций, которые могут быть выполнены на атомах. Ниже приведены операции.
Устанавливает значение атома в новое значение без учета текущего значения.
Атомно устанавливает значение атома в новое значение тогда и только тогда, когда текущее значение атома идентично старому значению атома. Возвращает true, если установлено, иначе возвращает false.
Атомно меняет значение атома на новое, основанное на определенной функции.