如何检索Clojure类型已扩展的协议列表?
答案 0 :(得分:1)
只需使用supers
:
(supers (class {}))
=> #{clojure.lang.AFn java.lang.Iterable java.lang.Runnable
clojure.lang.IPersistentMap clojure.lang.IEditableCollection
clojure.lang.IObj clojure.lang.MapEquivalence java.io.Serializable
clojure.lang.IKVReduce clojure.lang.IMapIterable java.util.Map
clojure.lang.APersistentMap clojure.lang.IPersistentCollection
clojure.lang.IFn clojure.lang.Associative clojure.lang.Counted
clojure.lang.Seqable java.lang.Object clojure.lang.IHashEq
clojure.lang.IMeta clojure.lang.ILookup java.util.concurrent.Callable}
如有疑问,您还可以尝试使用The Clojure CheatSheet找到的其他内容。例如:
(parents (class {})) =>
#{clojure.lang.IEditableCollection clojure.lang.IObj
clojure.lang.IKVReduce clojure.lang.IMapIterable
clojure.lang.APersistentMap}
(ancestors (class {})) =>
#{clojure.lang.AFn java.lang.Iterable java.lang.Runnable
clojure.lang.IPersistentMap clojure.lang.IEditableCollection
clojure.lang.IObj clojure.lang.MapEquivalence java.io.Serializable
clojure.lang.IKVReduce clojure.lang.IMapIterable java.util.Map
clojure.lang.APersistentMap clojure.lang.IPersistentCollection
clojure.lang.IFn clojure.lang.Associative clojure.lang.Counted
clojure.lang.Seqable java.lang.Object clojure.lang.IHashEq
clojure.lang.IMeta clojure.lang.ILookup java.util.concurrent.Callable}
(bases (class {})) =>
(clojure.lang.APersistentMap
clojure.lang.IObj
clojure.lang.IEditableCollection
clojure.lang.IMapIterable
clojure.lang.IKVReduce)
; Mostly synonyms
(class {}) => clojure.lang.PersistentArrayMap
(type {}) => clojure.lang.PersistentArrayMap