我试着去理解的语法用于调使用载的一个图书馆:

(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标签之后的项目应该是它适用的事物列表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top