Почему clojure преобразует черты в именах в подчеркивания в файловой системе? - PullRequest
27 голосов
/ 12 декабря 2010

Я использую clojure уже пару месяцев, и одну вещь, которую я действительно не понимаю, это то, почему черты в именах пространств имен должны быть представлены как подчеркивание в файловой системе.Может кто-нибудь объяснить мне это, и возможно ли иметь возможность использовать тире в именах файлов?

Ответы [ 2 ]

31 голосов
/ 15 декабря 2010

Это необходимый обходной путь взаимодействия Java.

Когда пространство имен Clojure AOT (заранее) скомпилировано в файл Java .class, оно должно иметь имя, которое является допустимым идентификатором Java. Черточки недопустимы в именах классов Java, поэтому Clojure преобразует их в подчеркивания. Он также преобразует символы типа * в слова типа _STAR_.

3 голосов
/ 12 декабря 2010

Вы имеете в виду, что файлы .class на диске имеют подчеркивание, где функции в Clojure имели тире? Я уверен, что прочитал, что это связано с тем, что JVM не поддерживает тире в этих именах файлов. (Или, по крайней мере, это не является гарантией того, что он их поддерживает.)

Это только ограничение имен файлов классов, и Clojure в любом случае молча решает эту проблему. Ваш собственный код может обрабатывать файлы с тире в имени файла.

Извините, что сейчас у меня нет ссылки на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...