宏编译指示
有时可以用编译指示语法来调用宏和模板,比如用在例程(过程、迭代器等)声明或例程类型表达式上。编译器执行以下简单的语法转换:
template command(name: string, def: untyped) = discard
proc p() {.command("print").} = discard
转换为:
command("print"):
proc p() = discard
type
AsyncEventHandler = proc (x: Event) {.async.}
转换为:
type
AsyncEventHandler = async(proc (x: Event))
当多个宏编译指示应用于同一个定义时,从左到右的第一个将先被求值。 然后,这个宏可以选择是否在其输出中保留其余的宏编译指示。保留下的那些宏编译指示的求值方式依此类推。
宏指示的应用还有更多,例如在类型、变量和常量声明中, 但这种行为被认为是实验性的,并在 experimental manual 中进行了记录。
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .