Chr*_*ris 8 functional-programming clojure
例如,如果我有两个不同的记录,但它们共享一些公共字段,有没有办法让两个记录共享一个共同的基本记录?看起来协议只允许声明方法签名.
我认为目前还不可能。
defrecord只是一个宏,您可以通过使用来检查它的作用macroexpand,例如:
(macroexpand '(defrecord User [Name Age]))
Run Code Online (Sandbox Code Playgroud)
因此,如果您想要这样的记录继承,您可能需要实现一个宏来执行此操作。但我不建议继承是我试图避免的事情,因为它会导致复杂性。