Zub*_*air 6 clojure multimethod
我想做的事情如下:
(defrecord Base [])
(defrecord Person [])
(defrecord Animal [])
(derive Person Base)
(derive Animal Base)
(isa? Animal Person)
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我已经意识到这是不可能的,所以我做的是这样的:
(defmulti type class)
(defmethod type Base [_] ::base )
(defmethod type Animal [_] ::animal )
(defmethod type Person [_] ::person )
Run Code Online (Sandbox Code Playgroud)
这有意义还是有更好的方法?
不,记录是Java类.正如multimethods页面所述:
您还可以使用类作为子类(但不是父类,只能通过Java继承来创建类的子类).
您不能使用记录扩展类,但可以实现接口.使用接口在Java类层次结构中播放,您可能能够使某些东西工作.
| 归档时间: |
|
| 查看次数: |
955 次 |
| 最近记录: |