Templates 使用模板构造导入
在一个文件中,我有几个来自同一目录的导入。如果我更改此文件的位置,而不必在导入中添加一对一“../”,我希望使用模板来构建它们,并在更改路径时使我的生活更轻松 我想知道我是否可以通过模板实现这个目标。这是我期望得到的一个例子:Templates 使用模板构造导入,templates,path,nim-lang,Templates,Path,Nim Lang,在一个文件中,我有几个来自同一目录的导入。如果我更改此文件的位置,而不必在导入中添加一对一“../”,我希望使用模板来构建它们,并在更改路径时使我的生活更轻松 我想知道我是否可以通过模板实现这个目标。这是我期望得到的一个例子: template importRoot(p: untyped) ??? importRoot a/b/c.nim # Resolves to import full/path/a/b/c.nim importRoot a/a.nim # Resolves to imp
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
选项可能会更简单。谢谢。我有很多模块和文件夹,我不认为路径在这里会有帮助,但这个宏可以缓解我的痛苦。