我正在尝试创建一个小的Clojure宏,用于使用类型提示的 def
一个字符串:
(defmacro def-string [name value]
`(def ^String ~name ~value))
(def-string db-host-option "db-host")
当我使用macroexpand
时,类型提示会丢失:
(macroexpand '(def-string db-host-option "db-host"))
;=> (def db-host-option "db-host")
不必考虑类型提示的智慧。
为什么宏会丢失元数据?我该如何编写这个宏,或者任何包含元数据的宏?