Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 如何检查符号在当前命名空间中是否可解析?_Clojure - Fatal编程技术网

Clojure 如何检查符号在当前命名空间中是否可解析?

Clojure 如何检查符号在当前命名空间中是否可解析?,clojure,Clojure,我想检查符号在当前名称空间中是否可解析。做这件事的标准方法是什么?看看。比如说 (ns-map *ns*) 将为您提供当前命名空间中绑定的映射。您可以检查此地图以确定您的符号是否为地图中的键 (defn resolvable? [sym] (contains? (ns-map *ns*) sym)) 我不知道这是否是规范的方法。在再次筛选API文档后,我偶然发现了什么可能是合适的函数: ; Returns the var or Class to which the symbol ; w

我想检查符号在当前名称空间中是否可解析。做这件事的标准方法是什么?

看看。比如说

(ns-map *ns*)
将为您提供当前命名空间中绑定的映射。您可以检查此地图以确定您的符号是否为地图中的键

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

我不知道这是否是规范的方法。

在再次筛选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)

如何区分未绑定的符号和绑定到nil的符号之间的区别?只有由符号命名的Var才能绑定到nil。符号本身在当前名称空间中命名一个变量,然后对其进行解析,或者不进行解析(然后resolve返回nil)。
(包含?(ns map*ns*)键)
执行相同的操作,可能更快。