Clojure名前空間のすべての関数をリストする方法を教えてください。私はいくつかの研究をしましたが、まだそこにはいません。私はすでにJavaクラスのメソッドをshowメソッドを使用してリストする方法を見つけました:
(show Java.awt.Graphics)
Clojure名前空間の関数を一覧表示するために、次のようなshowメソッドを試しました。
(show 'clojure.contrib.repl-utils)
これは、いくつかのJavaクラスメソッドを示していますが、doc
やshow
のような私が探しているものは示していません。これらを取得するにはどうすればよいですか?
私は通常電話します
(keys (ns-publics 'foo))
名前空間foo
によってエクスポートされたVarをリストするには、例えばclojure.contrib.monads
の場合、これは
(defmonad censor m-when-not m+write+m maybe-m maybe-t ...)
(...
はかなり多くの意味です)。
より一般的には、名前がns-
で始まる一連の関数があり、名前空間ごとにVarがリストされ、特定の追加の基準が付加されています。
ns-map
-すべての中で最も一般的な関数であり、シンボル(実際には非ネームスペース修飾シンボル)をキーとするマップを返します。各シンボルに対応する値は、指定されたネームスペースでシンボルが解決されるVarまたはクラスです。 。
ns-interns
-ns-map
と同様ですが、指定された名前空間にインターンされたVarのみが含まれます(use
またはrefer
呼び出しまたは暗黙的な参照により、指定された名前空間からアクセス可能な他の名前空間からのVarとは異なります) clojure.core
からのVarsの。
ns-publics
-ns-interns
と同様ですが、非プライベートVarのみが含まれます。
ns-imports
-ns-map
と似ていますが、Javaクラスに対応する値を持つエントリのみが含まれます。
ns-aliases
には、他の名前空間からVarを参照するときに省略形のエイリアスとして使用できる記号がリストされています。例えば(require '[clojure.contrib.math :as math])
を呼び出すと、ns-aliases
にはmath
(記号)のキーを持つエントリが含まれ、その値は実際のネームスペースclojure.contrib.math
になります。これらのマッピングは、ns-map
によって返されるマップには含まれていません。
dir を使用できます。 (おそらく、最初に質問されたときには、これは利用できませんでした。)
user=> (dir clojure.string)
blank?
capitalize
escape
join
lower-case
re-quote-replacement
replace
replace-first
reverse
split
split-lines
trim
trim-newline
triml
trimr
upper-case
nil
ご覧ください こちら 。すなわち:
;; Sometimes I like to ask which public functions a namespace provides.
(defn- ns-publics-list [ns] (#(list (ns-name %) (map first (ns-publics %))) ns))
反時計回りを使用する人のために、デフォルトで表示される「名前空間ブラウザ」があります。
表示されない場合は、メニューオプションから表示できます。
ウィンドウ>ビューを表示>名前空間ブラウザ
公式ドキュメント: http://doc.ccw-ide.org/documentation.html#_namespace_browser_view
公式ドキュメントからの抜粋:
ネームスペースブラウザビューには、アクティブなREPL。[2]のすべてのネームスペースのすべてのシンボルが表示されます。これにより、関連するファイル(jar内を含む)のシンボルの定義にジャンプできます。名前空間ブラウザビューでシンボル名をダブルクリックするだけです。