我学习Clojure的,我想知道如何处理用Clojure OO类的子类。例如:一个主抽象类,两个抽象子类(每个都重新定义了一些函数),在第三级中创建将在函数中使用的“对象”的最终子类。不知道如何做到这一点。但是,我设法用一个抽象类来完成一个子类,并使用defprotocol和defrecord。但是我不能在另一个内部实现一个协议。由于子类Clojure中
1
A
回答
6
你不需要类或子类。将您的数据表示为具有属性的地图。 “子类”可能有更多的属性。
如果您有关于属性变化的函数,则既可以使用基于属性的条件逻辑(如果,标准条件等),或者使用基于多方法或协议多态性,如果你真的需要。
在矩阵的话,没有勺子。
+0
我真的需要研究多种方法中的一种。我一直在写Clojure近半年,现在还没有碰到它们。 – Carcigenicate
2
你可以继承像这样的协议:
(extend <subtype>
<protocol>
(merge (get-in <protocol> [:impls <basetype>])
<map-of-redefined-methods>))
多方法提供与derive
继承的直接支持。
实际的Java子类关系可以用:extends
关键字指定为gen-class
。不过,这仅仅意味着Java互操作。
一般情况下,它是值得一试,你是否真的需要继承。它通常不是Clojure中建模的首选方法。
相关问题
- 1. Clojure子阵列
- 2. Clojure中的类型系统
- 3. 在Clojure中导入Java类
- 4. Clojure内容类型?
- 5. 在clojure中导入lucene罐子
- 6. Clojure中的原子文件替换
- 7. 状态monad vs Clojure中的原子
- 8. Clojure:阻止使用原子?
- 9. clojure:子集的排列?
- 10. 指定clojure中的对象类
- 11. 作出这样的延伸类Clojure中
- 12. 如何在Clojure中编写以下类?
- 13. 如何在Clojure中投射Java类?
- 14. 在Clojure中创建Java类的选项
- 15. Clojure中的PGobject类型转换
- 16. 如何从Clojure中导出Java类(.jar)?
- 17. 检查clojure中的东西类吗?
- 18. 将Java类导入到Clojure中
- 19. Clojure中
- 20. Clojure中
- 21. Clojure中
- 22. Clojure中
- 23. Clojure中
- 24. Clojure中
- 25. Clojure中
- 26. Map.Entry的Clojure类型提示
- 27. clojure rmi类路径问题
- 28. Clojure的类路径问题
- 29. Clojure:类型提示塔
- 30. Clojure的::类lint提示
创建一个协议作为一个抽象基类,然后定义表示每个新的“层次”的协议。记录可以实现多个协议,所以这应该起作用。 – Carcigenicate
也许是相关的:http://clojure.org/reference/multimethods(尤其是Clojure避开传统OO方法的部分,但你可以通过不同的方式实现多态)。 –
@Carcigenicate的事情是,我需要记录来实现一个协议,这将带来它的基础协议。例如:我有7类的顺序: A-> B A->Ç 乙 - > d B->电子 C->˚F C-“G 而对于B和C,他们需要重新定义A – juanimoli