gpt4 book ai didi

clojure - 结合 Clojure defprotocol 和 defrecord

转载 作者:行者123 更新时间:2023-12-04 13:20:52 26 4
gpt4 key购买 nike

据我所知,如果我想定义一个只能由一个 defprotocol 实现的协议(protocol)( defrecord ) ,我还是要先定义协议(protocol),再定义defrecord实现它:

(defprotocol AProtocol
(a-method [this])
(b-method [this that]))

(defrecord ARecord [a-field b-field]
AProtocol
(a-method [this] ...)
(b-method [this that] ...))

有没有办法将两者结合起来,也许是一个“匿名”协议(protocol)?

最佳答案

不要这样做。您的记录实现的“私有(private)”或“匿名”协议(protocol)只是用具有更好选择的语言重新发明了一个毫无意义的 OOP 版本。定义一个对您的记录进行操作的常规旧函数;没有理由必须与它们物理连接。

如果您以后想将其重构为协议(protocol)......这很容易!客户端将无法区分,因为协议(protocol)函数调用看起来就像常规函数调用。

关于clojure - 结合 Clojure defprotocol 和 defrecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6627020/

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