Clojure - Átomos

Atomsson un tipo de datos en Clojure que brindan una forma de administrar el estado compartido, síncrono e independiente. Un átomo es como cualquier tipo de referencia en cualquier otro lenguaje de programación. El uso principal de un átomo es mantener las estructuras de datos inmutables de Clojure. El valor que tiene un átomo se cambia con elswap! method.

Internamente, intercambiar! lee el valor actual, le aplica la función e intenta compararlo y configurarlo. Dado que otro subproceso puede haber cambiado el valor en el tiempo intermedio, es posible que tenga que volver a intentarlo y lo hace en un bucle giratorio. El efecto neto es que el valor siempre será el resultado de la aplicación de la función proporcionada a un valor actual, atómicamente.

Ejemplo

Los átomos se crean con la ayuda del método del átomo. Un ejemplo del mismo se muestra en el siguiente programa.

(ns clojure.examples.example
   (:gen-class))
(defn example []
   (def myatom (atom 1))
   (println @myatom))
(example)

Salida

El programa anterior produce el siguiente resultado.

1

Se accede al valor del átomo mediante el símbolo @. Clojure tiene algunas operaciones que se pueden realizar en átomos. Las siguientes son las operaciones.

No Señor. Operaciones y descripción
1 ¡Reiniciar!

Establece el valor del átomo en un nuevo valor sin tener en cuenta el valor actual.

2 comparar y configurar!

Atómicamente establece el valor del átomo en el nuevo valor si y solo si el valor actual del átomo es idéntico al valor anterior que tenía el átomo. Devuelve verdadero si ocurre un conjunto, de lo contrario, devuelve falso.

3 ¡intercambiar!

Cambia atómicamente el valor del átomo por uno nuevo basado en una función particular.