`Inject` proc 参数到模板 body
`Inject` proc argument into template body
给定以下代码段:
template myProc(body: untyped) =
template doStuff(stuffBody: untyped) =
proc doStuffArg(a: int) = stuffBody
body
myProc:
doStuff:
echo a
doStuffArg(123)
只要 a
没有在 doStuff body 中使用,代码就可以正常工作。有没有办法让 doStuff
body 意识到这个论点?
在此特定示例中,两个模板都必须标记为脏,以防止重写旨在使模板 hygienic:
的 AST
template myProc(body: untyped) {.dirty.} =
template doStuff(stuffBody: untyped) {.dirty.} =
proc doStuffArg(a: int) = stuffBody
body
myProc:
doStuff:
echo a
doStuffArg(123)
给定以下代码段:
template myProc(body: untyped) =
template doStuff(stuffBody: untyped) =
proc doStuffArg(a: int) = stuffBody
body
myProc:
doStuff:
echo a
doStuffArg(123)
只要 a
没有在 doStuff body 中使用,代码就可以正常工作。有没有办法让 doStuff
body 意识到这个论点?
在此特定示例中,两个模板都必须标记为脏,以防止重写旨在使模板 hygienic:
的 ASTtemplate myProc(body: untyped) {.dirty.} =
template doStuff(stuffBody: untyped) {.dirty.} =
proc doStuffArg(a: int) = stuffBody
body
myProc:
doStuff:
echo a
doStuffArg(123)