如何检查变量是否在clojure中实现接口?
所以我定义了一个关键词:如何检查变量是否在clojure中实现接口?,clojure,Clojure,所以我定义了一个关键词: (def a :hello) 如何检查它是否实现了IFn接口?对于一般情况,可以使用谓词: (instance? <class-or-interface> <object>) 对于问题中的代码,请执行以下操作: (instance? package.of.IFn a) 或者,正如评论中所指出的,对于询问a是否为IFn实例的非常具体的情况,这将起作用: (ifn? a) 更妙的是,使用(ifn?a)@DaveRay如何?我不知道接口会自动附
(def a :hello)
如何检查它是否实现了IFn接口?对于一般情况,可以使用谓词:
(instance? <class-or-interface> <object>)
对于问题中的代码,请执行以下操作:
(instance? package.of.IFn a)
或者,正如评论中所指出的,对于询问a
是否为IFn
实例的非常具体的情况,这将起作用:
(ifn? a)
更妙的是,使用
(ifn?a)
@DaveRay如何?我不知道接口会自动附带测试谓词,文档中对此有何解释?它是否适用于Java接口,如Serializable
?不,没有针对每种类型的通用谓词,但问题是如何测试IFn
,在这种情况下,IFn?
我想会比使用实例更惯用吗?
。类似地,我会使用string?
而不是您的第一个示例。您为什么要这样做?这可能表明设计有问题。
(ifn? a)