を:require
で使用すると、:only
がになります。同義語は次のとおりですか?Clojure 1.4ではrequireを参照するのは何ですか?
(ns so.example (:use [my.lib :only [function]]))
と
(ns so.example (:require [my.lib :refer [function]]))
を:require
で使用すると、:only
がになります。同義語は次のとおりですか?Clojure 1.4ではrequireを参照するのは何ですか?
(ns so.example (:use [my.lib :only [function]]))
と
(ns so.example (:require [my.lib :refer [function]]))
主なアイデアは、一つだけのオペレータを残し、:use
を完全に取り除くことです他のパッケージをロードする。あなたは:use
を(:require [my.lib :refer :all])
とエミュレートすることができます。
はい、彼らは等価である、
:refer
と:require
は、名前空間を構築するために必要な基本的な操作です。 :use
クラスは
:refer
をロードされます:require
よりconvienient
:use
が:refer
+ :require
多くの場合、名前空間に魔法はありません。
この
(ns so.example (:use my.lib))
同等とのような名前空間を作る場合:必要になります::require
に:refer
を追加する
(ns so.example (:require [my.lib :refer [function1 function2 function3
list every function in example
here and remember to keep it
up to date ]]))
1.4.0リリースでは、もはや使用する必要はありません。 require:referを代わりに使用してください。 Clojure 1.4.0のchangelogから: "requireは今、:referオプションを取ることができます:。参照は名前空間から参照するシンボルのリストを取るか、または:allはすべての公開変数を持ち込む" (https://8thlight.com/blog/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html)
私は ':refer'は':use'を取り除くことを許していますが、これがアイデアであったことを示す文書を教えてくれますか?私は個人的に、 ':use'は' clojure.test'のような特定の場合に便利だと思います。そのような場合に ':use'を使わないのはなぜですか? –
http://dev.clojure.org/jira/browse/CLJ-879 clojure-devメーリングリストのディスカッションへのリンクを参照してください... –