Добавление мета-данных в структуры замыкания - PullRequest
5 голосов
/ 23 марта 2011

Я хочу добавить метаданные к различным элементам на карте, но я получаю сообщение об ошибке в Clojure, если я повторю это с:

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

: возможно ли это?

1 Ответ

8 голосов
/ 23 марта 2011

Я могу ошибаться, но думаю, что вы не можете прикрепить метаданные к числу:

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}

И

user=> (meta (:a {:a (with-meta 'foo {:meta-tag "foo"})}))
{:meta-tag "foo"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...