如何在评估 clojure 宏时访问源位置?

问题描述 投票:0回答:1

在宏内部我想获取宏调用者的源文件和位置。

类似:

(defmacro my-macro []
  `(prn ~*source-position*))

其中

*source-position*
包含有关在评估宏时当前编译的文件的源位置的信息。

调用此宏时,应打印调用者的源文件、行和列。

clojure macros
1个回答
0
投票

使用

&form
符号可获取宏展开时原始形状的位置。

=>(defmacro m [x] `(prn '~(meta &form)))
#'user/m
=>(m (+ 1 3 3))
{:line 1, :column 1}
nil

并且 source-path 应该为您提供文件名。

© www.soinside.com 2019 - 2024. All rights reserved.