2012-04-27 4 views

Respuesta

80

idea principal de la adición de :refer-:require es deshacerse completamente de :use, dejando a un solo operador para cargar otros paquetes Puede emular el existente :use con (:require [my.lib :refer :all]) ...

+0

Entiendo que ': refer' nos permite deshacernos de': use', pero ¿puede indicarme documentación que indique que esa fue la idea? Personalmente creo que ': use' es conveniente en ciertos casos, como con' clojure.test'. ¿Por qué no usar ': use' en tales casos? –

+10

vea http://dev.clojure.org/jira/browse/CLJ-879 y enlace a la discusión en la lista de correo de clojure-dev ... –

24

sí, son equivalentes,

:refer y :require son las operaciones básicas que se requieren para construir espacios de nombres. :use es más conveniente

  • :require hace que las clases sean cargados
  • :refer añade cosas al espacio de nombres que es en realidad un mapa (en realidad un par de mapas)
  • :use es :refer + :require

tanto como parece, realmente no hay magia en los espacios de nombres

si haces un espacio de nombres como esto

(ns so.example (:use my.lib)) 

el equivalente con: requieren 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 ]])) 
+1

¿Por qué se agregó ': refer'? – Andrew

+0

es casi siempre utilizado con: como para dar nombres cortos a los paquetes. ohh y vino primero. usar llamadas: referir, refer no usar: use –

+0

Aún no entiendo por qué ': refer' se agregó a': require'. ¿Qué problema se ha resuelto que no estaba ya? – Andrew

Cuestiones relacionadas