小编use*_*564的帖子

命名空间混淆和宏

我想编写一个使用clj-time库函数的宏.在一个命名空间中,我想像这样调用宏:

(ns budget.account
  (:require [budget.time]))

(budget.time/next-date interval frequency)
Run Code Online (Sandbox Code Playgroud)

下一个日期宏将在另一个文件中定义,如下所示:

(ns budget.time
  (:require [clj-time.core :as date]))

(defmacro next-date [interval freq]
  `(~interval ~freq))
Run Code Online (Sandbox Code Playgroud)

如果使用以下参数(budget.time/next-date interval freq)调用宏,并且间隔和freq分别调用"周"和"2",那么宏展开将看起来像这样(clj-time.core/weeks 2)

每当我从REPL尝试这个时,它都无法解析命名空间.

有没有办法强制宏来解析clj-time命名空间的参数的间隔?做这个的最好方式是什么?

谢谢!

macros namespaces clojure

10
推荐指数
1
解决办法
577
查看次数

标签 统计

clojure ×1

macros ×1

namespaces ×1