Buscar..
Introducción
Un átomo en Clojure es una variable que se puede cambiar a lo largo de su programa (espacio de nombres). Debido a que la mayoría de los tipos de datos en Clojure son inmutables (o inmutables), no se puede cambiar el valor de un número sin redefinirlo, los átomos son esenciales en la programación de Clojure.
Define un átomo
Para definir un átomo, use una def
ordinaria, pero agregue una función de atom
delante de él, así:
(def counter (atom 0))
Esto crea un atom
de valor 0
. Los átomos pueden ser de cualquier tipo:
(def foo (atom "Hello"))
(def bar (atom ["W" "o" "r" "l" "d"]))
Lee el valor de un átomo
Para leer el valor de un átomo, simplemente ponga el nombre del átomo, con una @
antes de él:
@counter ; => 0
Un ejemplo más grande:
(def number (atom 3))
(println (inc @number))
;; This should output 4
Actualizar el valor de un átomo.
Hay dos comandos para cambiar un átomo, swap!
y reset!
. swap!
recibe comandos y cambia el átomo en función de su estado actual. reset!
cambia el valor del átomo por completo, independientemente de cuál sea el valor del átomo original:
(swap! counter inc) ; => 1
(reset! counter 0) ; => 0
Este ejemplo produce los primeros 10 poderes de 2
usando átomos:
(def count (atom 0))
(while (< @atom 10)
(swap! atom inc)
(println (Math/pow 2 @atom)))