如何检查Clojure值是否支持元数据?

时间:2014-11-22 16:02:52

标签: clojure metadata

由于只有符号和集合支持元数据才有标准方法来检查值是否支持元数据?例如

(can-have-metadata? value)

目前我正在检查该值是否是IObj的实例,但是如果有更好的方法则很好奇。

1 个答案:

答案 0 :(得分:3)

user> (defn meta-available? [x] 
        (instance? clojure.lang.IMeta x))
#'user/meta-available?
user> (meta-available? 1)
;=> false
user> (meta-available? "abc")
;=> false
user> (meta-available? [1 2 3])
;=> true
user> (meta-available? {:a 1})
;=> true