clojure 和 clojurescript 中 "take" 的区别?
difference with "take" in clojure and clojurescript?
我今天遇到了一个超级奇怪的问题
(let [t :cognitive
tab (name t)
tab-name (string/join "" (take 3 (string/split tab #"")))]
(println "@@@" t tab tab-name))
returns
@@@ :cognitive cognitive cog
在 clojure 中,但是
@@@ :cognitive cognitive co
在 clojurescript 中(使用试剂呈现)。注意 cljs 版本
中缺少的 g
我在 (take 3 ...
表达式前后尝试了 doall
,但无济于事
顺便说一句,我正在使用
[org.clojure/clojure "1.7.0"]
[org.clojure/clojurescript "1.7.170"]
我的 cljs 项目,
[org.clojure/clojure "1.8.0"]
对于 clj 项目
在 cljs 中:
(string/split (name :cognitive) #"")
给你:
["" "c" "o" "g" "n" "i" "t" "i" "v" "e"]
所以你的 (take 3 ...
正在服用 ""
、"c"
和 "o"
。
至于原因——clojure 和 clojurescript 调用的底层 String.split
java 方法可能在不同版本之间表现不同。 [已编辑]
我今天遇到了一个超级奇怪的问题
(let [t :cognitive
tab (name t)
tab-name (string/join "" (take 3 (string/split tab #"")))]
(println "@@@" t tab tab-name))
returns
@@@ :cognitive cognitive cog
在 clojure 中,但是
@@@ :cognitive cognitive co
在 clojurescript 中(使用试剂呈现)。注意 cljs 版本
中缺少的g
我在 (take 3 ...
表达式前后尝试了 doall
,但无济于事
顺便说一句,我正在使用
[org.clojure/clojure "1.7.0"]
[org.clojure/clojurescript "1.7.170"]
我的 cljs 项目,
[org.clojure/clojure "1.8.0"]
对于 clj 项目
在 cljs 中:
(string/split (name :cognitive) #"")
给你:
["" "c" "o" "g" "n" "i" "t" "i" "v" "e"]
所以你的 (take 3 ...
正在服用 ""
、"c"
和 "o"
。
至于原因——clojure 和 clojurescript 调用的底层 String.split
java 方法可能在不同版本之间表现不同。 [已编辑]