代码之家  ›  专栏  ›  技术社区  ›  HappyFace

我怎样才能更习惯地写这个clojure宏呢?

  •  0
  • HappyFace  · 技术社区  · 7 年前
    (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) .

    (我在一个非常小的个人项目中使用这个宏,我不在乎为这个用例创建宏是否真的是一个糟糕的实践。尽管我喜欢知道为什么在更大的项目中会有问题。)

    1 回复  |  直到 7 年前
        1
  •  1
  •   Michiel Borkent    7 年前
    (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
      )