代码之家  ›  专栏  ›  技术社区  ›  Peter Tillemans

为什么在ns形式中的require与require函数的行为不同

  •  11
  • Peter Tillemans  · 技术社区  · 14 年前

    当我需要NS表单中的库时,我得到:

    test> (ns test (:require '(clojure.contrib [logging :as log] [sql :as sql]) ))
    lib names inside prefix lists must not contain periods
    [Thrown class java.lang.Exception]
    

    当我使用Require函数时,它按预期工作。

    test> (require '(clojure.contrib [logging :as log] [sql :as sql]) )
    nil
    

    ns的文档指的是require函数的文档,但是由于它们的行为不同,这有点令人困惑。

    1 回复  |  直到 14 年前
        1
  •  16
  •   levand    14 年前

    这个 ns 表单是一个宏,因此不需要使用“来引用提供的seq”。

    Clojure文件中的一个例子:

    (ns foo.bar
        (:refer-clojure :exclude [ancestors printf])
        (:require (clojure.contrib sql sql.tests))
        (:use (my.lib this that))
        (:import (java.util Date Timer Random)
           (java.sql Connection Statement)))