如何检查变量是否在clojure中实现接口?

时间:2012-08-29 03:15:01

标签: clojure

所以我定义了一个关键字:

(def a :hello)

如何检查它是否实现了IFn接口?

1 个答案:

答案 0 :(得分:15)

对于一般情况,您可以使用instance?谓词:

(instance? <class-or-interface> <object>)

引用文档:

  

(instance? c x)计算x并测试它是否是该类的实例   C。返回true或false。

例如:

(instance? java.lang.String "test")
> true

(instance? java.io.Serializable "test")
> true

对于问题中的代码,请执行以下操作:

(instance? package.of.IFn a)

或者,正如评论中指出的那样,对于询问aIFn的实例的具体情况,这将起作用:

(ifn? a)