(defmacro get-color [color-name]
`@(thi.ng.color.core/as-int32 (var-get (resolve (symbol "thi.ng.color.core"
(str '~color-name))))))
我喜欢避免使用
(var-get (resolve (symbol ... (str '~parem))))
。类似于thi.ng.color.core/(~color-name)
。(我在一个非常小的个人项目中使用这个宏,我不关心为这个用例创建宏是否真的是一个糟糕的实践。尽管我喜欢知道为什么在更大的项目中会有问题。)
最佳答案
(require 'thi.ng.color.core)
(defmacro get-color
[color-name]
(let [sym (symbol "thi.ng.color.core"
(str color-name))]
`@(thi.ng.color.core/as-int32 ~sym)))
(comment
(get-color "RED") ;;=> 4294901760
(get-color RED) ;;=> 4294901760
)
关于clojure - 我该如何习惯性地编写此Clojure宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50818808/