函数形参中$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)'