使用模板构建导入

时间:2015-11-02 17:13:28

标签: templates path nim

在一个文件中,我有几个来自同一目录的导入。如果我改变了这个文件的位置,而不是必须添加一对一的' ../'在导入内部,我想使用模板来构建它们,并在改变路径时让我的生活更轻松。

我想知道我是否可以通过模板实现这一目标。这是我期望获得的一个例子:

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

1 个答案:

答案 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选项可能更容易。