2016-03-21 69 views
1

`Inject`參數proc到考慮下面的代碼段模板體

template myProc(body: untyped) = 
    template doStuff(stuffBody: untyped) = 
    proc doStuffArg(a: int) = stuffBody 

    body 

myProc: 
    doStuff: 
    echo a 

doStuffArg(123) 

代碼將工作,只要a不doStuff體內使用。有沒有辦法讓doStuff機構知道這個論點?

回答

3

在這個特殊的例子,這兩個模板是爲了防止AST旨在讓這個模板hygienic重新書寫標記爲髒:

template myProc(body: untyped) {.dirty.} = 
    template doStuff(stuffBody: untyped) {.dirty.} = 
    proc doStuffArg(a: int) = stuffBody 

    body 

myProc: 
    doStuff: 
    echo a 

doStuffArg(123) 
相關問題