вторник, 29 мая 2012 г.

Clojure. Метаданные для значений.

В документациии clojure по работе с метаданными написано, что их можно использовать для коллекций или символов(clojure/metadata). Поэтому если вы заходите добавить метаданные к значению, то получите ошибку:


user=> (def a (with-meta 2 {:a "test metadata"}))
java.lang.ClassCastException: java.lang.Integer cannot be cast to clojure.lang.IObj
user=>

Однако можно добавлять метаданные к var переменным. Это делается так:


user=> (def #^{:a "metadata"} a 2)
#'user/a
user=> (meta #'a)
{:ns #, :name a, :file "NO_SOURCE_PATH", :line 27, :a "metadata"}
user=> ((meta #'a) :a)
"metadata"
user=>

Комментариев нет:

Отправить комментарий