我幾個月來一直在使用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