这是什么语法:template tplname{op(id,[id2])}(params)
What is this syntax: template tplname{op(id,[id2])}(params)
在json模块中:
template simpleGetOrDefault*{`{}`(node, [key])}(node: JsonNode, key: string): JsonNode = node.getOrDefault(key)
花括号怎么了(里面有什么)?
这是一个 "term-rewriting macro" 的例子。
稍早一点,在 json 模块中,您会找到具有以下签名的 {}
运算符的定义:
proc `{}`*(node: JsonNode, keys: varargs[string]): JsonNode =
## Traverses the node and gets the given value. If any of the
## keys do not exist, returns ``nil``. Also returns ``nil`` if one of the
## intermediate data structures is not an object.
term-rewriting 宏的目标是拦截只有一个字符串作为运算符参数的情况,并将其转换为对 getOrDefault
.[=14 的简单调用=]
在json模块中:
template simpleGetOrDefault*{`{}`(node, [key])}(node: JsonNode, key: string): JsonNode = node.getOrDefault(key)
花括号怎么了(里面有什么)?
这是一个 "term-rewriting macro" 的例子。
稍早一点,在 json 模块中,您会找到具有以下签名的 {}
运算符的定义:
proc `{}`*(node: JsonNode, keys: varargs[string]): JsonNode =
## Traverses the node and gets the given value. If any of the
## keys do not exist, returns ``nil``. Also returns ``nil`` if one of the
## intermediate data structures is not an object.
term-rewriting 宏的目标是拦截只有一个字符串作为运算符参数的情况,并将其转换为对 getOrDefault
.[=14 的简单调用=]