使用模板构造导入
Using templates to construct import
在一个文件中,我从同一目录导入了多个文件。如果我更改此文件的位置,而不是必须在导入中添加一对一的“../”,我想使用模板来构建它们并在更改路径时让我的生活更轻松。
我想知道我是否可以使用模板实现此 objective。这是我期望得到的示例:
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
您需要一个宏。例如,以下几行:
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
选项可能更容易。
在一个文件中,我从同一目录导入了多个文件。如果我更改此文件的位置,而不是必须在导入中添加一对一的“../”,我想使用模板来构建它们并在更改路径时让我的生活更轻松。
我想知道我是否可以使用模板实现此 objective。这是我期望得到的示例:
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
您需要一个宏。例如,以下几行:
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
选项可能更容易。