在Clojure中为什么使用:仅[]
的源具有以下内容:在Clojure中为什么使用:仅[],clojure,Clojure,的源具有以下内容: (:use [clojure.xml :as xml :only []] [clojure.contrib.seq :only [fill-queue]]) 使用clojure.xml但不列出:only参数的目的是什么?请注意:as xml与:only[]组合时,似乎使该行等同于(:require[clojure.xml:as xml])。如果您想将一些变量复制到本地名称空间(即非空的:only),但允许该名称空间的其余部分通过:as显式别名,则该样式可能很有用
(:use [clojure.xml :as xml :only []]
[clojure.contrib.seq :only [fill-queue]])
使用
clojure.xml
但不列出:only
参数的目的是什么?请注意:as xml
与:only[]
组合时,似乎使该行等同于(:require[clojure.xml:as xml])
。如果您想将一些变量复制到本地名称空间(即非空的:only
),但允许该名称空间的其余部分通过:as
显式别名,则该样式可能很有用。因为这不是他正在做的,它实际上应该只是一个:require
可能编写此代码的人已经有了一堆:使用声明,并且不想编写单独的:require
子句。在我看来,这不是一个推荐的决定,但如果他只有一个名称空间,他用这种方式使用它将节省他几个字符?我想知道为什么语言设计师没有选择单一(组合)的use/require表单。@SridharRatnakumar What。“我想知道”这个问题毫无意义。ns
宏是一个组合的use/require表单,您必须以某种方式指定要解释为use
的部分,以及要解释为require
的部分。他不能只是神奇地猜测。@amalloy-我的问题更像是“为什么我们首先需要一个单独的使用
和要求
功能”?我自己做了一点研究,发现了这个可以统一使用/要求的新语法: