Clojure协议“继承” - 不是关于默认实现

时间:2018-05-20 17:05:56

标签: inheritance clojure

我有协议A。我想创建一个协议B,以便使用B扩展一个类型,迫使程序员为A的所有成员函数提供实现。

当然,这只是核心Java中的接口继承。

我已经看到了这方面的构图方法。这些问题是命名空间被掩盖了。如果A位于名称空间c.a中,则在该名称空间中定义所有方法。使用组合,B的方法在名称空间c.b中定义。

据推测,名称空间c.b需要名称空间c.a。因此,方法的变量会被定义为B

如果存在继承自C的其他协议A,则会成为问题。当lib客户端命名空间中需要名称空间c.bc.c时会发生什么?其中一组方法变量掩盖了另一组,胜利组不适用于满足失败协议的类型

如果没有编写自己的协议定义宏并扩展宏,我将如何解决这个问题?

0 个答案:

没有答案