Clojure:确定是否声明了变量

jay*_*100 12 unit-testing clojure variable-assignment

如何测试变量已被声明或分配(即检查是否定义了"a",当我希望程序调用这样的代码时(def a(create-a))?

并且相关---这个问题的答案如何解决已经宣布的符号(即函数)的解决问题? Clojure:确定函数是否存在

似乎定义的变量应该以与定义的函数相同的意义检查,但我发现确定函数是否存在的解决方案不足以确定变量是否存在.

一些上下文:我正在为多开发人员项目编写单元测试,并希望确保测试数据和不同类中的方法已被定义.由于没有好的IDE支持clojure,在我看来,鉴于其结构松散,在测试其输出/内容之前测试方法名称和变量名称是好的.

tol*_*ius 12

您可以使用resolve来查看变量是否已绑定/定义:

(resolve 'meaning)
nil

(def meaning 42)
#'user/meaning

(resolve 'meaning)
#'user/meaning
Run Code Online (Sandbox Code Playgroud)

或者您可以布尔检查它,如果您需要true/false:

(boolean (resolve 'meaning))
true
Run Code Online (Sandbox Code Playgroud)