函数形参中$value的含义
meaning of $value in function formal parameters
我正在查看 JQ“builtin.jq”文件,并找到
def _assign(paths; $value): reduce path(paths) as $p (.; setpath($p; $value));
我正在尝试弄清楚“$value”作为形式参数的语义。这可能意味着参数应该只提供一个值,而不是它们的列表。或者它可以与
相同
def _assign(paths; vv): vv as $value | reduce path(paths) as $p (.; setpath($p; $value));
或者是其他原因?
我在文档中找不到关于这种函数形式参数的任何内容。
你说得对 def _assign(paths; vv): vv as $value ...
本质上,形参 $x 等同于形参列表中有 x
,紧随其后的是 x as $x
。
这在jq manual中有简要提及:
Or use the short-hand:
def addvalue($f): ...;
没有提到的是,使用这个例子,f
也可以用在 addvalue
的正文中,尽管这样做很容易引起混淆。例如,您希望以下结果产生什么结果?
echo 1 2 3 | jq -n 'def f($x): x+x; f(input)'
我正在查看 JQ“builtin.jq”文件,并找到
def _assign(paths; $value): reduce path(paths) as $p (.; setpath($p; $value));
我正在尝试弄清楚“$value”作为形式参数的语义。这可能意味着参数应该只提供一个值,而不是它们的列表。或者它可以与
相同def _assign(paths; vv): vv as $value | reduce path(paths) as $p (.; setpath($p; $value));
或者是其他原因?
我在文档中找不到关于这种函数形式参数的任何内容。
你说得对 def _assign(paths; vv): vv as $value ...
本质上,形参 $x 等同于形参列表中有 x
,紧随其后的是 x as $x
。
这在jq manual中有简要提及:
Or use the short-hand:
def addvalue($f): ...;
没有提到的是,使用这个例子,f
也可以用在 addvalue
的正文中,尽管这样做很容易引起混淆。例如,您希望以下结果产生什么结果?
echo 1 2 3 | jq -n 'def f($x): x+x; f(input)'