在一个文件中,我有几个来自同一目录的导入。如果我改变了这个文件的位置,而不是必须添加一对一的' ../'在导入内部,我想使用模板来构建它们,并在改变路径时让我的生活更轻松。
我想知道我是否可以通过模板实现这一目标。这是我期望获得的一个例子:
template importRoot(p: untyped) ???
importRoot a/b/c.nim # Resolves to import full/path/a/b/c.nim
importRoot a/a.nim # Resolves to import full/path/a/a.nim
答案 0 :(得分:1)
你需要一个宏。例如,以下几行:
import macros
const root = "rootfolder"
macro importRoot*(paths: varargs[untyped]): untyped =
result = newNimNode(nnkStmtList)
let sub = !root
for p in paths:
add result, quote do:
import `sub`.`p`
请注意,在命令行中添加--path
选项可能更容易。