2010-01-02 13 views
18

Ou dois-je énumérer spécifiquement chaque classe que j'importe?Clojure dispose-t-il d'un équivalent du package d'importation Java? *?

Je suis en train d'apprendre Clojure juste, et il semble utile de pouvoir faire quelque chose comme ça dans le REPL:

(import '(java.io *)) 

Non que ce soit une syntaxe valide, mais ce serait bien d'avoir quelque chose cela fait l'équivalent. Cela permettrait d'économiser de la dactylographie, surtout quand on bricole. Dans le code de production actuel, j'énumère toujours chaque classe que j'importe, quelle que soit la langue, mais c'est très pratique de ne pas avoir à le faire.

Répondre

19
+3

Bummer. J'apprécie sa réflexion sur la raison pour laquelle ce n'est pas une bonne idée, mais je préférerais ne pas avoir le langage qui me contraint comme ça, en particulier quand je joue dans le REPL. – Jeff

+2

Notez qu'il s'agit d'une explication des raisons pour lesquelles il n'est pas possible de faire efficacement à l'exécution. Au moment de la compilation, il peut être fait fonctionner (évidemment, puisque c'est pourquoi vous pouvez le faire en Java .....) – mikera

1

À moins d'avoir manqué une mise à jour, il n'y a aucun moyen d'inclure des paquets dans un espace de noms dans Clojure.

1

Il semble n'y avoir aucun moyen de le faire actuellement. La macro d'importation est uniquement là pour importer les classes spécifiées dans l'espace de noms actuel. J'ai essayé d'écrire une autre macro pour faire ce que vous voulez, mais cela ne semble pas possible avec le chargeur de classe utilisé par Clojure car il ne nous permet pas d'accéder aux ressources du paquet.