元数据:用来“描述数据的数据。
在Clojure中,元数据是与一个对象逻辑上的值产生正交的那些数据。
一个person的名和姓是普通的旧式数据(plain old data)。但一个person对象可以被序列化为XML这件事情,其实与person对象本身毫不相干,这就是元数据。同样,person对象当前正处于脏状态,需要被刷新到数据库中,这也是元数据。
一个变量的大部分元数据都是由Clojure编译器自动添加的。为了给一个变量添加自定义的元数据键/值对,可以使用元数据读取器宏。
:file的值为NO_SOURCE_FILE,表示这些代码是在REPL中录入的。
因为元数据:tag实在是太常用了,也可以使用其简化形式^Classname,它会被展开为^{:tag Classname}。
元数据会造成视觉混乱,也可以把它们放到最后。这得用到 defn 的一个变体,先是一或多个带括号的函数主体,随后紧接一个元数据映射表。