ClojureScript clojure.set?

10

如何在ClojureScript中使用clojure.set?

我总是遇到错误。

(def middle-land (set (for [x water-hor
                            y (vec (clojure.set/difference (set (range 0 board-side))
                                                           (set water-ver)))]
                    [x y])))

ReferenceError: clojure is not defined
1个回答

18

看起来你需要显式地要求命名空间才能使用它:

ClojureScript:cljs.user> (ns core (:require clojure.set))
ClojureScript:core> (clojure.set/difference #{1 2} #{1 4}) ;=> #{2}

2
在Clojure中,你还需要显式地包含clojure.set - dnolen
@dnolen,是不是有一些Leiningen的“魔法”让我可以用纯Clojure来做到这一点? - ponzao
@dnolen 为什么这个 clojure.set/difference 在 Clojure 中可以工作,但在 ClojureScript 中却不行?我只是复制了代码。 - nickik
3
@ponzao 是的,Leiningen 为方便起见向其 REPL 添加了一些命名空间。 - dnolen
@dnolen,感谢您的澄清。根据一个快速实验,Leiningen似乎也可以为其他“目标”执行此操作(lein midje也可以在没有显式require的情况下工作)。 - ponzao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接