是否可以在ClojureScript:require中使用:refer:all?

是否可以在ClojureScript:require中使用:refer:all?,clojure,clojurescript,cljx,Clojure,Clojurescript,Cljx,我只是在尝试ClojureScript,首先把我在Clojure中写的东西转换成cljx 当我试图编译它时,我得到: clojure.lang.ExceptionInfo: :refer must be followed by a sequence of symbols in :require 我在网上找到了一些间接的参考资料,但没有明确说明我是否应该在ClojureScript程序中使用:refere:all 如果我做不到,这项限制的原因是什么?不,这是故意不可能的。ClojureScri

我只是在尝试ClojureScript,首先把我在Clojure中写的东西转换成cljx

当我试图编译它时,我得到:

clojure.lang.ExceptionInfo: :refer must be followed by a sequence of symbols in :require 
我在网上找到了一些间接的参考资料,但没有明确说明我是否应该在ClojureScript程序中使用
:refere:all


如果我做不到,这项限制的原因是什么?

不,这是故意不可能的。ClojureScript邮件列表中最近出现了一个与
相关的邮件:refere:all
,看起来它将永远不受支持

引用David Nolen的话:

这只是一种糟糕的风格,就我所知,它没有这样做的唯一原因 Clojure的变化是因为核心团队对 尽可能保持向后兼容性。明显的缺乏 裸体:在ClojureScript中使用是故意的


@dsm这是一个关于ClojureScript及其与Clojure的区别的问题。这似乎是一个很难回答的问题,很公平。我收回了我的近距离演讲,有人能解释一下为什么这会是一种糟糕的风格吗?即使可以看到较低级别函数和较高级别导出函数之间的自然划分,也最好使用一个大名称空间而不是两个大名称空间?裸函数的另一个问题是:使用或
refere:all
,它引入了静态相分离。如果现在执行
(ns my ns(:require foo.bar refere:all))
,然后在以后添加foo.bar/baz,则可能会与my ns中已定义的baz冲突。使用“all”意味着您必须能够枚举命名空间中声明的封闭列表,否则可能会导致交互和部分重新编译行为极度混乱。如果您有宏,这尤其有问题。