Clojure 协议与集合抽象的深入探究
1. 协议内省
协议内省提供了便捷的函数来查询协议及其与类型的关系,主要包括 extenders 、 extends? 和 satisfies? 三个函数。
1.1 extenders
extenders 函数用于返回已扩展到给定协议的类。例如,在涉及 Measurable 协议的示例中,我们可以查看哪些类型参与了该协议:
(extenders Measurable)
;= (user.BorderedButton user.Button)
这类似于询问 “哪些类实现了某个 Java 接口 x?” 需要注意的是,由于类型可以在运行时的任何时候扩展以满足协议,因此这些结果仅在通过 extenders 查询协议的那个时间点是准确的。
1.2 extends?
extends? 函数用于判断一个类型是否已扩展到某个协议,如果是则返回 true ,否则返回 false 。示例如下:
(extends? Measurable Button)
;= true
Clojure协议与ArraySet集合抽象探究
超级会员免费看
订阅专栏 解锁全文
65

被折叠的 条评论
为什么被折叠?



