Si había un átomo?hay una manera de conseguir todas las llaves de los relojes en clojure
(get-watches a)
;; => [:watcher :watcher2]
Si había un átomo?hay una manera de conseguir todas las llaves de los relojes en clojure
(get-watches a)
;; => [:watcher :watcher2]
(atom {})
crea un objeto de tipo clojure.lang.Atom
que se extiende clase abstracta clojure.lang.ARef que implementa clojure.lang.IRef interfaz. IRef declara el método getWatches que se implementa en ARef.
Aquí está la solución:
(def a (atom {}))
(add-watch a :watcher println)
(println (-> a .getWatches keys))
es extraño que clojure.core
no tiene get-watches
. Mirroring add-watch
aplicación obtenemos:
(defn get-watches
"Returns list of keys corresponding to watchers of the reference."
[^clojure.lang.IRef reference]
(keys (.getWatches reference)))
(:watches (bean a))
o
(keys (:watches (bean a)))
respuesta de Ivan es ideal para Clojure en la JVM. He aquí cómo lo haces en ClojureScript:
(keys (.-watches a))