2024年Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面以了解有关此内容的更多信息。

0
Records and Types

你好

我想在不定义协议的情况下创建record的方法
(defprotocol ComponentProtocol
(view [x])
(render [x]))

(defrecord Component [...])
ComponentProtocol
(view [x] ...)
(render[x] ...))

==> 而是按照下面的方式定义record

(defrecord Component [...])
(view [x] ...)
(render [x] ...))

谢谢
-Taoufik

1 个答案

0

据我所知,这是不可能的。您始终必须实现一个接口或协议。如果您不想使用协议,可以使用definterface创建一个接口。

这是正确的,也是设计意图的一部分,目的是指导您避免“任意的API”这类OO风格。我们已经有了一种制作独立方法的机制 — 函数。
by
https://clojure.org/reference/datatypes 这里是否有相关的文档解释这些动机
...