"采取"在clojure和clojurescript?

时间:2016-12-07 15:24:29

标签: clojure clojurescript

我今天遇到了一个非常奇怪的问题

(let [t :cognitive
      tab (name t)
      tab-name (string/join "" (take 3 (string/split tab #"")))]
  (println "@@@" t tab tab-name))

返回

@@@ :cognitive cognitive cog

在clojure中,但是

@@@ :cognitive cognitive co
clojurescript中的

(使用试剂渲染)。注意cljs版本中缺少的g

我在doall表达式之前和之后尝试了(take 3 ...,但无济于事

BTW,我正在使用

[org.clojure/clojure "1.7.0"]
[org.clojure/clojurescript "1.7.170"]

表示我的cljs项目,

[org.clojure/clojure "1.8.0"]

用于clj项目

1 个答案:

答案 0 :(得分:2)

在cljs中:

(string/split (name :cognitive) #"")

给你:

["" "c" "o" "g" "n" "i" "t" "i" "v" "e"]

因此,(take 3 ...正在使用"""c""o"

至于为什么 - clojure和clojurescript调用的基础String.split java方法可能在版本之间表现不同。 [编辑]