Estoy tratando de entender qué hace ^:const
en clojure. Esto es lo que dicen los desarrolladores. http://dev.clojure.org/display/doc/1.3¿Cómo funciona Clojure ^: const?
(def constantes de {: pi 3,14 : e 2,71})
(def ^: pi const (: constantes pi)) (def ^: const e (: e constantes))
La sobrecarga de mirar hacia arriba: ey: pi en el mapa ocurre en tiempo de compilación, como (: constantes pi) y (constantes e) se evalúan cuando se evalúan sus formularios padre def.
Esto es confuso ya que los metadatos es para el var obligado a pi
símbolo, y la var obligado a e
símbolo, sin embargo, la siguiente oración dice que ayuda a acelerar las búsquedas de mapa, no las Búsquedas de var.
¿Alguien puede explicar lo que ^:const
está haciendo y la razón detrás de usarlo? ¿Cómo se compara esto con el uso de un bloque gigante let
o usando una macro como (pi)
y (e)
?
Esto significa que el siguiente (def ^: const key-to-num {: one 1: two 2}) (def sum (+ (: one key-to-num) (: dos key-to- num)) se compila a (def resumir (+ 1 2)) –
no, ^:? const sólo funciona en los valores primitivos, no objetos arbitrarios – noisesmith