gpt4 book ai didi

java - 在 Clojure 中扩展自定义 Java 类、映射和序列的协议(protocol)

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:04 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com