2013-11-22 3 views
4

나는 Clojure에서 매우 간단한 데이트 라이브러리를 작성했으며, JVM에서 코드가 실행될 때와 ClojureScript로 Javascript로 컴파일 될 때 둘 다 사용할 수 있기를 원한다. 연고에서의 파리 (fly)는 매크로가 플랫폼 고유의 날짜 문자열 구문 분석 메커니즘을 사용할 수 있도록 코드가있는 런타임 환경을 감지하는 방법입니다. 각 플랫폼의 날짜 객체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에는 b/w 런타임을 전환하기위한 특별 Conditional reader 규칙이 있습니다. 당신의 예에서

, 그것은 같은 것입니다 :

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

(print *runtime*) ;; :clojure 
관련 문제