0
マクロのuse
と:use
の違いは何ですか?使用とnsマクロでの使用の違い
Docsは、次の言葉:
Use :use in the ns macro in preference to calling this directly
マクロのuse
と:use
の違いは何ですか?使用とnsマクロでの使用の違い
Docsは、次の言葉:
Use :use in the ns macro in preference to calling this directly
それは少し混乱しています。あなたは物事のこの「正常な」方法を検討すべきである
(ns clj.core
(:require [tupelo.core :as t]))
:ns
形で
(:require ...)
を使用したいです。
他のバージョンでは、コロンなしで、あなたがまたはns
フォームを使用したくないことはできない場合にはREPLで呼び出すことができ、同じ名前の機能です。これは次のようになります。
> lein repl
user=> (require '[tupelo.core :as t])
nil
user=> (t/append [1 2 3] 4)
[1 2 3 4]
ご注意:REPL /機能バージョンについてはを、あなたはまた、名前空間の仕様を含むベクトルを引用しなければなりません。 :require
を使用してns
バージョンの仕様を引用していないことに注意してください。
> lein repl
user=> (ns clj.core
#_=> (:require [tupelo.core :as t]))
user=>
:あなたは、エディタに既にある、ちょうどREPLで迅速な何かをテストしたい場合は、代替として
、あなたはREPLにあなたのファイルの先頭から全体ns
フォームをペースト/カットすることができます
これは、手作業でfunction-versionを入力するよりも簡単でエラーを起こしにくいものです。良い概要については
ここ最近のブログ投稿を参照してください。https://stuartsierra.com/2016/clojure-how-to-ns.html
また、[このスレッド](https://groups.google.com/forum/#!topic/clojure/mIlKaOiujlo)を参照してください。 –
ちょうど明白です:REPLからの '(use ...)'と '(require ...) 'という関数形式を使うことは完全に容認されます。実際、そのような状況ではおそらくそれが望ましいでしょう。しかし、あなたのソースコードファイルでは、絶対に可能でない限り(例えば、サイクリックな依存関係など)、すべてのものを '(ns ...)'形式に入れるべきです。 –