2010-01-02 5 views
18

또는 가져온 모든 클래스를 구체적으로 열거해야합니까?Clojure에는 Java의 가져 오기 패키지 *가 있습니까?

난 그냥 지금 Clojure에서 배우고, 그리고 REPL에서 이런 일을 할 수있는 것이 유용 할 것 같습니다 :

(import '(java.io *)) 

하지 않음이 유효한 구문입니다,하지만 무언가를 가지고 좋은 것 그것은 동등한 일을합니다. 특히 타이핑 할 때 타이핑을 줄일 수 있습니다. 실제 프로덕션 코드에서는 항상 언어와 상관없이 가져 오는 각 클래스를 열거하지만 그렇게하지 않아도됩니다.

답변

19
+3

험머. 왜 그것이 좋은 생각이 아닌지에 대한 그의 생각에 감사 드리지만, REPL에서 놀 때 특히 저를 강요하지 않으려합니다. – Jeff

+2

이것은 런타임에 효율적으로 수행 할 수없는 이유에 대한 설명입니다. 컴파일 할 때 작업 할 수 있습니다 (분명히 Java에서이 작업을 수행 할 수 있기 때문에 .....). – mikera

1

업데이트를 놓친 경우가 아니면 Clojure의 네임 스페이스에 와일드 카드 포함 패키지를 추가 할 수 없습니다.

1

현재 그렇게 할 방법이없는 것처럼 보입니다. 가져 오기 매크로는 지정된 클래스를 현재 네임 스페이스로 가져 오기위한 것입니다. 나는 당신이 원하는 것을하기 위해 또 다른 매크로를 작성하려고 시도했다. 그러나 Clojure가 사용하는 클래스 로더로는 패키지 리소스에 액세스 할 수 없기 때문에 가능하지 않은 것으로 보인다.