题
我试着去理解的语法用于调使用载的一个图书馆:
(use 'clojure.contrib.duck-streams)
对我来说很有意义,因为它适用的引读者宏要。普.鸭流,以便读者不试图评估这一串。
现在,如果我想要使用:只有标签只载的读者,为什么这是正确的:
(use '[clojure.contrib.duck-streams :only (reader)])
代替:
(use '[clojure.contrib.duck-streams :only reader])
我读这意味着通过在这一矢量的参数来使用,但REPL抱怨与不知道如何创建ISeq从象征。为什么括号周围的读者?
这也是相当于第一线和有效的:
(use '[clojure.contrib.duck-streams])
因此它似乎'string'[串的]是等效的论点,我不明白。
解决方案
:only
想要一个列表中的符号。这只是功能是如何编写的。注意到为文档字符串 refer
, , use
使用。
refers to all public vars of ns, subject to filters.
filters can include at most one each of:
:exclude list-of-symbols
:only list-of-symbols
:rename map-of-fromsymbol-tosymbol
它是这样写的,这样你可以指定多于一个符号,如果你想要的。
(use '[clojure.contrib.duck-streams :only (reader writer)])
作为讨论 这一最近的文章, 如果你在写一个函数,或是返回的一个变量的参数数目,这是一个好主意,让它始终采取回报名单或载体或组,即使它把/返回一个单一项目。因为:
nil
, ,经常用来表示"零件",seq
能。空集的也是seq
能。- 两个或更多项目在一个列表中的
seq
能。 - 它才有意义,还有一个项目
seq
能够通过把它变成一个清单本身。
这将是尴尬,有一个项目的情况下是一种特殊情况。这是更一致和更容易的程序,当你对一个项目,作为一种退化的情况下并把它纳入一份清单。
注意,所有的 use
关心是否 :only
论点是seqable收藏的符号。这意味着清单,载体和将所有工作。
(use '[clojure.contrib.duck-streams :only [reader writer]])
(use '[clojure.contrib.duck-streams :only #{reader writer}])
一个单 Symbol
但是不是 seq
以这就是为什么你得到的异常你做的。
看看 核心。clj 如果你想看看这是所有执行。
其他提示
这些不仅仅是“parens”。 — parens是创建列表的语法。它会出现在:only标签之后的项目应该是它适用的事物列表。
不隶属于 StackOverflow