Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用Clojure';是否派生以创建defrecord类类型的层次结构?_Clojure_Multimethod - Fatal编程技术网

我可以使用Clojure';是否派生以创建defrecord类类型的层次结构?

我可以使用Clojure';是否派生以创建defrecord类类型的层次结构?,clojure,multimethod,Clojure,Multimethod,我想做一些类似的事情: (defrecord Base []) (defrecord Person []) (defrecord Animal []) (derive Person Base) (derive Animal Base) (isa? Animal Person) 这可能吗 更新: 后来我意识到这是不可能的,所以我正在做这样的事情: (defmulti type class) (defmethod type Base [_] ::base ) (defmethod type A

我想做一些类似的事情:

(defrecord Base [])
(defrecord Person [])
(defrecord Animal [])

(derive Person Base)
(derive Animal Base)

(isa? Animal Person)
这可能吗

更新: 后来我意识到这是不可能的,所以我正在做这样的事情:

(defmulti type class)
(defmethod type Base [_] ::base )
(defmethod type Animal [_] ::animal )
(defmethod type Person [_] ::person )

这有意义吗?还是有更好的方法?

没有。记录是Java类。如该页所述:

还可以将类用作子类 (但不是父母,唯一的方法 做某事一个班级的孩子是 通过Java继承)

不能用记录扩展类,但可以。使用接口在Java类层次结构中发挥作用,您可能能够使某些功能正常工作