我在 Clojure 1.2 中创建了一个协议(protocol),它处理我自己的 Java 类,并对通用 java.lang.Object 进行默认处理。代码看起来像这样:
(extend-protocol PMyProtocol
my.java.ClassName
(protocol-function [c]
"My Java class result")
java.lang.Object
(protocol-function [c]
"Default object result"))
我应该如何扩展它以对标准 Clojure 数据结构(特别是映射、 vector 和序列)进行特殊处理?
最佳答案
Clojure 的所有持久数据结构都实现了扩展 clojure.lang.PersistentCollection
的接口(interface)。 Clojure 的 transient 集合实现了 clojure.lang.TransientCollection
。您可以将协议(protocol)扩展到这些,就像将其扩展到类一样(尽管仅处理持久性集合可能更有意义)。
关于java - 在 Clojure 中扩展自定义 Java 类、映射和序列的协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3388817/