我无法理解Clojure 中reify函数的用法。它在clojure中有什么用?
你能提供例子吗?
reify
宏允许创建匿名类,扩展java.lang.Object
类和/或实现指定的接口/协议。该API文档不明确说明的目的而提供的技术细节是什么呢宏。Java interop文档提供了有关目的的简短描述:
从Clojure 1.2开始,reify也可用于实现接口。
甚至可以在数据类型文档中找到更多信息,在这里可以找到非常详细的说明它的功能以及与之比较的方式proxy
:
deftype和defrecord定义命名类型时,reify定义匿名类型并创建该类型的实例。用例是您需要一次性实现一个或多个协议或接口,并希望利用本地上下文的情况。在这方面,它是用例,类似于Java中的代理或匿名内部类。
reify的方法主体是词法闭包,可以引用周围的局部范围。reify与代理不同之处在于:
仅支持协议或接口,没有具体的超类。方法主体是结果类的真实方法,而不是外部fns。实例上方法的调用是直接的,而不使用映射查找。在方法图中不支持动态交换方法。结果在构造和调用方面都比代理更好。在所有约束都不是禁止的情况下,reify比代理更可取。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句