Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates `将`proc参数注入模板体_Templates_Scope_Arguments_Nim Lang - Fatal编程技术网

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)