シンボルが現在のネームスペースで解決可能かどうかを確認する方法は?

StackOverflow https://stackoverflow.com/questions/1412551

  •  06-07-2019
  •  | 
  •  

質問

現在のネームスペースでシンボルが解決可能かどうかを確認したい。これを行うための標準的な方法は何ですか?

役に立ちましたか?

解決

もう一度APIドキュメントをふるい分けた後、適切な関数が何であるかを見つけました:

; Returns the var or Class to which the symbol
; will be resolved in the current namespace, else nil.
  (resolve 'foo)

; see also:
  (ns-resolve *a-namespace* 'foo)

他のヒント

このページをご覧ください。例

(ns-map *ns*)

は、現在のネームスペースのバインディングのマップを提供します。このマップを調べて、シンボルがマップのキーであるかどうかを判断できます。

(defn resolvable? [sym] 
  (contains? (ns-map *ns*) sym))

これが標準の方法かどうかわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top