为什么我不能:要求:参考clojurescript?

时间:2013-11-19 17:22:48

标签: clojure namespaces clojurescript

请参阅:https://github.com/clojure/clojurescript/wiki/Differences-from-Clojure#namespaces

令人困扰的是,惯用的clojure是:

(ns clojure-example
  (:require [clojure.set :refer [union]]))

但惯用的clojurescript是:

(ns clojurescript-example
  (:use [clojure.set :only [union]]))

当然,clojurescript代码也可以在clojure中使用,但是这会让恶魔们说我应该使用require来代替:refer

这是什么原因?

1 个答案:

答案 0 :(得分:8)

实际上ClojureScript确实支持:require :refer并且已经支持了很长时间(here's my commit从2012年6月12日起引入了对:refer的支持)。 那个wiki页面已经过时了。我已经在wiki上编辑了名称空间部分,以使其更新。

至于什么是惯用语,当然有些人不喜欢:use,但在经过几年的生产使用后,这几乎不会使它变得单调乏味。您可以自由决定是否更喜欢:require :refer

(尽管:use实际上提供:require不具备的功能的用例 - 使用(:use lib.foo lib.bar lib.quux)引入多个名称空间 - 在ClojureScript中确实不受设计支持。)