如何才能更习惯地编写此Clojure宏?
我喜欢避免使用如何才能更习惯地编写此Clojure宏?,clojure,macros,lisp,lisp-macros,Clojure,Macros,Lisp,Lisp Macros,我喜欢避免使用(var-get(resolve(symbol…(str'~parem)))。类似于thi.ng.color.core/(~color name) (我在一个非常小的个人项目中使用这个宏,我不在乎为这个用例创建宏是否真的很糟糕。尽管我想知道为什么在更大的项目中它会有问题。)(需要'thi.ng.color.core] (def)获取颜色 [颜色名称] (让[sym(符号“thi.ng.color.core”) (str颜色名称))] `@(thi.ng.color.core/as-
(var-get(resolve(symbol…(str'~parem)))
。类似于thi.ng.color.core/(~color name)
(我在一个非常小的个人项目中使用这个宏,我不在乎为这个用例创建宏是否真的很糟糕。尽管我想知道为什么在更大的项目中它会有问题。)(需要'thi.ng.color.core]
(def)获取颜色
[颜色名称]
(让[sym(符号“thi.ng.color.core”)
(str颜色名称))]
`@(thi.ng.color.core/as-int32~sym)))
(评论)
(获取颜色“红色”);=>4294901760
(获得红色);;=>4294901760
)
我的解决方案的工作原理是这样的(使用红色)
。这一个甚至不适用于(获取颜色“红色”)
。您没有指定您的用法。我更新了答案。
(defmacro get-color [color-name]
`@(thi.ng.color.core/as-int32 (var-get (resolve (symbol "thi.ng.color.core"
(str '~color-name))))))