2014-09-22 3 views
5

Может ли кто-нибудь дать мне хороший пример ответа на различие между использованием, требованием и импортом.Разница между использованием, требованием и импортом

Я надеюсь, что кто-то может мне помочь.

+2

другой дубликат http://stackoverflow.com/questions/871997/difference-between-use-and-require?rq=1 и http://stackoverflow.com/questions/3408076/difference-in-clojure-between -use-и-требуют? RQ = 1 – edbond

ответ

7

require гарантирует, что пространство имен Clojure было скомпилировано и инстанцировано.

  • необязательно обновлять его от источника, если при условии, что :reload ключ
  • необязательно создание псевдонимов, если ключ :as предоставляется.
  • необязательное изменение текущего пространства имен для включения сопоставлений в необходимые пространства имен пространства имен, если предоставляется ключ :refer. Отображение видно только внутри требуемого пространства имен и не является транзитивным для других пространств имен, требующих его.

use идентичен требовать в действии, за исключением того, что по умолчанию, чтобы изменить текущее пространство имен, чтобы включить весь ВАР целевого пространства имен, как если бы :refer :all было обеспечено с помощью функции refer. Он принимает ключи :exclude, :only и :rename для указания модификации текущего пространства имен.

import предназначен для добавления сопоставлений имен классов в текущее пространство имен, так что квалификаторы пакета не должны использоваться.

0

require загружает и компилирует Clojure namespaces. import позволяет избежать с использованием полностью определенных классов классов Java (то же, что и import на Java).

1

Короче говоря, использовать require

Вы практически никогда не хотите, чтобы потасовка символы из разных пространств имен в том же пространстве имен как use делает, за исключением случайных REPL работы.