还要注意,那 (def another-var (with-meta a-var {:foo :bar})) 不会将元数据附加到 瓦尔 ,但对 值 。因为在你的例子中 a-var 拥有一个整数,我不希望你的例子完全工作,因为整数不能保存元数据。
(def another-var (with-meta a-var {:foo :bar}))
a-var
user=> (def a-var 2) #'user/a-var user=> (def another-var (with-meta a-var {:foo :bar})) java.lang.ClassCastException: java.lang.Integer cannot be cast to clojure.lang.IObj (NO_SOURCE_FILE:2)
像这样:
user> (def ^{:foo :bar} another-var 2) #'user/another-var user> (clojure.pprint/pprint (meta #'another-var)) {:ns #<Namespace user>, :name another-var, :file "NO_SOURCE_FILE", :line 1, :foo :bar} nil