Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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 是否可以检索defn';d变量?_Clojure - Fatal编程技术网

Clojure 是否可以检索defn';d变量?

Clojure 是否可以检索defn';d变量?,clojure,Clojure,如果我用defn定义了一个函数,并且定义了一个包含:pre和:post表单的条件映射,我如何检索该条件映射?我注意到 (meta #'fn-name) 不包含条件映射。我特别寻找:pre条件(以便派生一个与它们等价但不断言的谓词)。除了在函数体中查找asserts之外,还有什么方法可以恢复它们吗?不幸的是,在处理fn宏之后,它们没有存储在任何地方。它们作为断言直接添加到函数的主体。你可以查一下 作为一种解决方法,您可能可以编写自己的defn变体,它可以获取:pre和:post条件,并将它们存

如果我用
defn
定义了一个函数,并且定义了一个包含
:pre
:post
表单的条件映射,我如何检索该条件映射?我注意到

(meta #'fn-name) 

不包含条件映射。我特别寻找
:pre
条件(以便派生一个与它们等价但不断言的谓词)。除了在函数体中查找
assert
s之外,还有什么方法可以恢复它们吗?

不幸的是,在处理
fn
宏之后,它们没有存储在任何地方。它们作为断言直接添加到函数的
主体
。你可以查一下


作为一种解决方法,您可能可以编写自己的
defn
变体,它可以获取
:pre
:post
条件,并将它们存储为元数据。

谢谢DaoWen!我在
fn
中看到了这些行,但不知怎的,我希望defn会有额外的机器来存储它们。我猜添加它们会增加内存开销,这就是为什么不保留它们。感谢您提出的解决方案!