我正在学习Clojure,其中在使用
或者使用
我认为我理解了这两个选项之间的区别,并且也看到了文档here,它说:
:as以符号作为其参数,并将该符号作为当前命名空间中库的命名空间的别名。
:refer接受要从命名空间引用的符号列表,或使用关键字:all来带入所有公共vars。
但是我仍然不确定:
1.何时应使用一个选项而不是另一个选项?
2.这两个选项之间是否有性能差异? (我的想法是没有,因为编译器将优化这两个选项)
(我还编写了两个使用
:require
过程中,有一个选项可以使用:refer
来引用特定方法或所有方法。或者使用
:as
然后选择需要的方法。我认为我理解了这两个选项之间的区别,并且也看到了文档here,它说:
:as以符号作为其参数,并将该符号作为当前命名空间中库的命名空间的别名。
:refer接受要从命名空间引用的符号列表,或使用关键字:all来带入所有公共vars。
但是我仍然不确定:
1.何时应使用一个选项而不是另一个选项?
2.这两个选项之间是否有性能差异? (我的想法是没有,因为编译器将优化这两个选项)
(我还编写了两个使用
core.async
的小程序,其中一个使用:as
,另一个使用:refer
。运行两个程序所需的时间几乎相同。)
:use
,不要使用:refer :all
,不要使用:rename
。仅在非常频繁使用的符号上使用:require :refer
。 - David Tonhofer