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

标签 clojure metadata

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

(can-have-metadata? value)

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

最佳答案

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

关于clojure - 如何检查 Clojure 值是否支持元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079390/

相关文章:

haskell - Clojure 可以像 Haskell 一样制作字母列表吗?

emacs - Mac OSX、Emacs 24.2 和 nrepl.el 不工作

functional-programming - Clojure元数据有哪些用途?

c# - 设置 JPEG 元数据 - 实现问题

python - 在 Python 项目中将元信息(__version__ 等)放在哪里?

database - 数据库中的元数据和模式有什么区别?

clojure - 在 Clojure 中是否有一个惯用的替代品来代替零双关语?

macros - clojure 中的宏是如何扩展的?

clojure - 为什么 dotrace 会在这里抛出 StackOverflowError?

sql - 如何查找 Firebird 数据库中的所有文本 blob 字段