请参阅: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
!
这是什么原因?
答案 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中确实不受设计支持。)