这是一个简单的例子:
(let [^String y "abc"] (meta y)) ; returns nil
似乎根本没有元数据,为什么?
根据文件:
类型提示是放置在符号或表达式上的元数据标签 由编译器使用。
答案 0 :(得分:4)
(meta y)
会返回y
的元数据,而不是符号y
。
您无法访问let正文中的符号y
。只有评估者在评估let*
特殊表格时才能访问它。
(read-string "^String y")
;-> y ;; a symbol
(meta *1)
;-> {:tag String}