2016-07-30 29 views
3

通常,Clojure源文件被命名爲(例如)foo.clj,而Clojurescript源文件命名爲foo.cljs。我的印象是,在Clojure版本大於1.7的情況下,如果我希望可以使用來自Clojure和Clojurescript的requireuse加載,我可以命名文件foo.cljc。cljc文件的基本功能

這是正確的嗎?這似乎暗示在Using cljcreader conditions的主要文檔頁面上,但據我所知,它從未明確聲明。

這不是一個關於使用讀者條件指定在Clojure和Clojurescript中運行的替代代碼的問題;它更基礎。例如,我有一個包含完全通用代碼的源文件:它將在Clojure和Clojurescript中保持不變。我可以假設通過命名爲「.cljc」,require將始終從Clojure和Clojurescript中找到它(假設它命名正確,位於正確位置等)?

[我敢肯定,我是對的,但我不能肯定,我認爲這將是值得擁有的記錄在這裏,如果我正確的答案。]

+0

嗯,好問題!似乎到目前爲止它已被認爲是理所當然的。我會說**是**,您對cljc文件的目的和功能的理解是正確的,但是正如您在您的問題中所述,找到官方聲明是另一回事。也許Alex Miller可以發表明確的答案。 –

+0

即使沒有官方聲明,@SamEstep,我對經驗豐富且知識淵博的用戶的自信斷言感到滿意。像Alex Miller這樣的人的陳述當然會更好 - 這確實使官方,非常 - 但似乎沒有必要。如果你對此感到足夠自信,那麼你可能想回答。 – Mars

+0

我認爲自己在Clojure中經驗豐富,知識豐富,但在ClojureScript中沒有。我會讓一位Clojure核心開發人員或同時是Clojure開發人員和ClojureScript開發人員的人員,以及比我更廣泛地使用cljc文件的人員回答您的問題。 –

回答

5

這是正確的。當Clojure或ClojureScript需要加載名稱空間時,他們首先查找特定於平臺的文件(.class,然後在Clojure上使用.clj,在ClojureScript上使用.cljs),如果找不到,則查找.cljc文件。

與其他源文件一樣,您仍然需要確保它可用於類路徑中的語言。