Templates `将`proc参数注入模板体
给出以下代码段:Templates `将`proc参数注入模板体,templates,scope,arguments,nim-lang,Templates,Scope,Arguments,Nim Lang,给出以下代码段: template myProc(body: untyped) = template doStuff(stuffBody: untyped) = proc doStuffArg(a: int) = stuffBody body myProc: doStuff: echo a doStuffArg(123) 只要不在doStuff主体内使用a,该代码即可工作。有没有办法让doStuffbody知道这个参数?在这个特定的例子中,两个模板都必须标记
template myProc(body: untyped) =
template doStuff(stuffBody: untyped) =
proc doStuffArg(a: int) = stuffBody
body
myProc:
doStuff:
echo a
doStuffArg(123)
只要不在doStuff主体内使用
a
,该代码即可工作。有没有办法让doStuff
body知道这个参数?在这个特定的例子中,两个模板都必须标记为脏的,以防止重新写入AST以使模板:
template myProc(body: untyped) {.dirty.} =
template doStuff(stuffBody: untyped) {.dirty.} =
proc doStuffArg(a: int) = stuffBody
body
myProc:
doStuff:
echo a
doStuffArg(123)