2010-12-12 2 views

답변

26

Java 상호 운용성에 필요한 해결 방법입니다.

Clojure 네임 스페이스가 Java .class 파일로 컴파일 된 AOT (ahead-of-time) 인 경우 유효한 Java 식별자 이름이 있어야합니다. 대시는 Java 클래스 이름에서 유효하지 않으므로 Clojure는이를 밑줄로 변환합니다. 또한 *과 같은 문자를 _STAR_과 같은 단어로 변환합니다.

+0

다른 점은 AOT가 아닌 것입니까? – Chris

+0

번호 Clojure 컴파일은 항상 동일합니다. AOT- 컴파일은 클래스 파일을 디스크에 씁니다. –

3

디스크에있는 .class 파일에 Clojure의 기능에 밑줄이 있다는 의미입니까? 나는 그것이 그 파일 이름에 대시를 지원하지 않는 JVM과 관련이 있다고 읽었을 것입니다. (또는 최소한 그것이 그것을 지원한다는 보장이 아님)

이것은 클래스 파일 이름의 제한이며 Clojure는이 문제를 자동으로 처리합니다. 자신의 코드는 여전히 파일 이름에 대시가있는 파일을 처리 할 수 ​​있습니다.

죄송하지만 지금 당장은 참고 자료가 없습니다.

+0

대시를 clj 파일에 넣으려고했지만 대시를 밑줄로 변경하지 않으면 clojure 프로그램에서 파일을 읽을 수 없습니다. – Zubair

+0

예, JVM 제한 사항 때문입니다. http://clojure.org/libs를 참조하십시오. lib 이름의 하이픈은 경로의 밑줄로 대체됩니다. –

+0

"사용자 코드가 여전히 파일 이름에 대시가있는 파일을 처리 할 수 ​​있습니다"라는 대답은 무엇을 의미합니까? 이것은 .clj 파일 또는 .class 파일을 참조합니까? – Zubair

관련 문제