2013-11-22 147 views
4

我用Clojure寫的一個非常簡單的日期圖書館,我希望能夠使用它都當我的代碼在JVM上運行,當它被編譯爲JavaScript與ClojureScript。在美中不足的是如何檢測的代碼是運行環境中,這樣的宏可能使用平臺自有的日期字符串解析機制。每個平臺的日期對象如何檢測Clojure運行時環境?

應該怎麼寫,可能在不同的部署平臺,如JVM,JS,CLR等可重複使用圖書館嗎?我知道,人們可能會欺騙和解析與正則表達式的日期字符串但不會輕易涵蓋種類繁多,其內置的日期解析庫解決相當不錯人類語言的解析月份名稱的情況。

+0

看看cljx - https://github.com/lynaghk/cljx – edbond

回答

1

您可以使用這些其它瓦爾:

http://clojuredocs.org/clojure_core/clojure.core/clojure-version

Returns clojure version as a printable string. 

http://clojuredocs.org/clojure_core/clojure.core/clojure-version

The version info for Clojure core, as a map containing :major :minor 
:incremental and :qualifier keys. Feature releases may increment 
:minor and/or :major, bugfix releases will increment :incremental. 
Possible values of :qualifier include "GA", "SNAPSHOT", "RC-x" "BETA-x" 
3

使用決心找出乏定義:

user=> (resolve '*clojurescript-version*) 
nil 
user=> (resolve '*clojure-version*) 
#'clojure.core/*clojure-version* 

user=> *clojure-version* 
{:major 1, :minor 5, :incremental 1, :qualifier nil} 
+0

決心不cljs可用。 : - / –

0

Clojure的有特殊Conditional reader規則,交換機B/W的運行時間。

在您的例子,它會是這樣的:

(def ^:dynamic *runtime* 
    #?(:clj :clojure) 
    #?(:cljs :clojurescript)) 

(print *runtime*) ;; :clojure