我几个月来一直在使用clojure,我真的不明白的一件事是为什么命名空间名称中的破折号必须在文件系统中表示为下划线。任何人都可以向我解释这一点,是否有可能能够在文件名中使用破折号?为什么clojure将名称中的破折号转换为文件系统中的下划线?
21
A
回答
26
这是Java互操作性的必要解决方法。
当Clojure名称空间是AOT(提前编译)到Java.class文件中时,它必须有一个名称是一个有效的Java标识符。 Dash在Java类名中无效,所以Clojure将它们转换为下划线。它还将*
等字符转换为像_STAR_
这样的字词。
3
你的意思是磁盘上的.class
文件有下划线,Clojure中的函数有破折号?我确信我读过这是与JVM不支持这些文件名中的破折号有关。 (或者至少它不能保证它支持它们。)
这只是类文件名的限制,Clojure无声无息地处理这个问题。您自己的代码仍然可以处理文件名中带有破折号的文件。
很抱歉,我现在没有这方面的参考资料。
相关问题
- 1. 为什么PIP将下划线转换为破折号
- 2. 将下划线转换为破折号的正则表达式php
- 3. Mod重写将下划线转换为影响嵌入图像的破折号
- 4. 将单个和连续的下划线重写为破折号
- 5. 如何使用.htaccess RewriteRule将下划线更改为破折号
- 6. 在列名中破折号的转换
- 7. url解码破折号和下划线
- 8. 如何将下划线转换为Java中的人类可读名称?
- 9. 带有破折号而不是下划线的Rails控制器名称
- 10. ASP.NET MVC2不会用HtmlAttributes中的破折号代替下划线
- 11. Clojure:将Clojure文件转换为YAML
- 12. Ember-Data ref。 11:下划线的属性名称 - 为什么?
- 13. 为什么带有下划线的名称不符合CLS?
- 14. 如何用Nginx替换下划线到破折号
- 15. Swagger将下划线转换为camelcase
- 16. 消除下划线并将其转换为小写的MySQLselect查询列名称
- 17. 如何将Ruby类名转换为下划线分隔的符号?
- 18. 将java函数转换为PHP的破折号编码
- 19. 在C中,为什么某些函数名称前缀为“_ _”(双下划线)
- 20. 如何递归重命名android资产并用下划线替换破折号
- 21. 为什么在PHP中双下划线(__)?
- 22. 将空格转换为Rails中CSV标头的下划线
- 23. 为什么`float.is_integer`中的下划线,而不是`str.isnumeric`中的下划线?
- 24. 为什么api方法名称不能包含下划线?
- 25. 如何将Assembly.CodeBase转换为C#中的文件系统路径?
- 26. 为什么非休息空间( )正在转换为破折号字符( - )
- 27. 为什么Devart Entity Developer正在删除属性名称中的下划线?
- 28. 如何将上部转换为下部并用破折号替换空格?
- 29. 为什么在我的变量中出现一个破折号
- 30. 从路径获取文件名,并将下划线转换为空格
它不是AOT吗? – Chris 2012-01-23 15:52:47
编号Clojure编译总是相同的。 AOT编译只需将类文件写入磁盘。 – 2012-03-09 23:31:58