161

useとの違いを説明できる人はいますrequireか?:use:requirens

4

4 に答える 4

102

requirelibs(まだロードされていない)をロードuseし、同じことを行い、さらにそれらの名前空間を参照します(したがって、withのようにetcclojure.core/referを使用する可能性もあります)。直接ではなく、両方での使用をお勧めします。:excludeclojure.core/referns

于 2009-05-16T09:24:49.710 に答える
36

use sure を使用すると、関数を呼び出すたびに名前空間を詳しく説明する必要がないため、簡単になりますが、名前空間の競合が発生して混乱を招く可能性もあります。「使用」と「必要」の間の適切な中間点は、実際に使用する名前空間の関数のみを「使用」することです。

例えば:

('[clojure-contrib.duck-streams :only (ライター・リーダー)] を使用)
またはさらに良いことに、名前空間定義のファイルの先頭で指定します。

(ns com.me.project
   (:use [clojure.contrib.test-is :only (deftest is run-tests)]))
于 2009-06-20T00:37:08.800 に答える
22

前述のように、大きな違いは、(require 'foo)では lib の名前空間内の名前を次のように参照する(foo/bar ...)ことです。(use 'foo)そうすると、それらは現在の名前空間にあり (それが何であれ、競合がない場合)、呼び出すことができます。彼らは好き(bar ...)です。

于 2009-06-18T04:42:10.403 に答える