(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/

10-10 18:28
查看更多