向clojure结构添加元数据

向clojure结构添加元数据,clojure,Clojure,我想将元数据添加到地图中的不同项目中,但如果我使用以下命令,则Clojure中会出现错误: {:a (with-meta 1 {:some-meta-tag "some-meta-data-value"} ) } :这可能吗?我可能错了,但我认为您无法将元数据附加到数字: user=> (with-meta 1 {:meta-tag "foo"}) java.lang.ClassCastException: java.lang.Int

我想将元数据添加到地图中的不同项目中,但如果我使用以下命令,则Clojure中会出现错误:

{:a 
    (with-meta 
        1
        {:some-meta-tag "some-meta-data-value"}
    )
} 

:这可能吗?

我可能错了,但我认为您无法将元数据附加到数字:

user=> (with-meta 1 {:meta-tag "foo"})
java.lang.ClassCastException: java.lang.Integer cannot be cast to clojure.lang.IObj

符号和集合支持元数据,即关于符号或集合的数据映射

这似乎奏效了:

user=> {:a (with-meta 'foo {:meta-tag "foo"})}
{:a foo}


谢谢,这一套很好用,正是我想要的!对的内置Java类型(字符串、数字等)不能有元数据。
user=> (meta (:a {:a (with-meta 'foo {:meta-tag "foo"})}))
{:meta-tag "foo"}