2015-11-02 29 views
-1

在一個文件中,我有幾個從同一目錄導入。如果我改變這個文件的位置,而不是在導入內部添加一對一的'../',我想使用一個模板來構建它們,並且在改變路徑時讓我的生活更輕鬆。使用模板構建導入

我想知道我是否可以通過模板實現這個目標。這是我期望得到的一個例子:

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

您需要一個宏。例如一些大意如下:

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選項,而不是。

+0

謝謝。我有很多模塊和文件夾,我不認爲路徑在這裏會有所幫助,但是這個宏可以緩解我的痛苦。 – Arrrrrrr