2010-01-02 19 views
18

¿O tengo que enumerar específicamente cada clase que importo?¿Tiene Clojure un paquete de importación de Java equivalente? *?

sólo estoy aprendiendo Clojure ahora, y parece útil ser capaz de hacer algo como esto en el REPL:

(import '(java.io *)) 
No es que esto es una sintaxis válida

, pero sería bueno tener algo eso hace el equivalente. Ahorraría algo de tipeo, especialmente cuando juegas por ahí. En el código de producción real, siempre enumero cada clase que estoy importando, independientemente del idioma, pero es muy conveniente no tener que hacerlo.

Respuesta

19
+3

Bummer. Aprecio su pensamiento sobre por qué no es una buena idea, pero preferiría no tener el idioma restringido así, particularmente cuando juego en el REPL. – Jeff

+2

Tenga en cuenta que esta es una explicación de por qué no es posible hacerlo eficientemente en tiempo de ejecución. En tiempo de compilación se puede hacer que funcione (obviamente, ya que es por eso que puedes hacerlo en Java .....) – mikera

1

A menos que haya perdido una actualización, no hay forma de que wild card incluya paquetes en un espacio de nombres actualmente en Clojure.

1

Parece que no hay formas de hacerlo actualmente. La macro de importación solo está allí para importar las clases especificadas en el espacio de nombres actual. Intenté escribir otra macro para hacer lo que deseaba, pero no parece posible con el cargador de clases utilizado por Clojure, ya que no nos permite acceder a los recursos del paquete.

Cuestiones relacionadas