【发布时间】:2012-08-29 03:15:01
【问题描述】:
所以我定义了say一个关键字:
(def a :hello)
如何检查它是否实现了 IFn 接口?
【问题讨论】:
-
为什么要这样做?这可能表明设计损坏。
标签: clojure
所以我定义了say一个关键字:
(def a :hello)
如何检查它是否实现了 IFn 接口?
【问题讨论】:
标签: clojure
对于一般情况,您可以使用instance? 谓词:
(instance? <class-or-interface> <object>)
引用文档:
(instance? c x)评估 x 并测试它是否是类的实例 C。返回真或假。
例如:
(instance? java.lang.String "test")
> true
(instance? java.io.Serializable "test")
> true
对于问题中的代码,请执行以下操作:
(instance? package.of.IFn a)
或者,正如 cmets 中所指出的,对于询问 a 是否是 IFn 的实例的非常具体的情况,这将起作用:
(ifn? a)
【讨论】:
(ifn? a)。
Serializable?
IFn,在这种情况下,ifn? 会比使用@987654334 更惯用@。同样,我会使用 string? 而不是您的第一个示例。