online - En Clojure 1.4, ¿cuál es el uso de referirse a require?
clojure web framework (3)
¿Qué ventaja tiene usar :refer a :require tener más que usar :only en :use ? ¿Son los siguientes sinónimos?
(ns so.example (:use [my.lib :only [function]]))
y
(ns so.example (:require [my.lib :refer [function]]))
A partir de la versión 1.4.0, ya no hay una buena razón para usar el uso. Use require: consulte en su lugar. Desde el registro de cambios de Clojure 1.4.0: "require ahora puede tomar una opción: referir.: Refer. Toma una lista de símbolos para referirse desde el espacio de nombres o: all para traer todos los vars públicos". (de https://8thlight.com/blog/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html )
La idea principal de agregar :refer :require es deshacerse completamente de :use , dejando solo un operador para cargar otros paquetes. Puede emular existente :use con (:require [my.lib :refer :all]) ...
sí, son equivalentes,
:refer y :require son las operaciones básicas requeridas para construir espacios de nombres. :use es más conveniente
-
:requirecausa que las clases se carguen -
:referagrega cosas al espacio de nombre que en realidad es solo un mapa (en realidad, un par de mapas) -
:usees:refer+:require
tanto como parece, realmente no hay magia en los espacios de nombres
si haces un espacio de nombres como este
(ns so.example (:use my.lib))
el equivalente con: require sería:
(ns so.example (:require [my.lib :refer [function1 function2 function3
list every function in example
here and remember to keep it
up to date ]]))