首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么jq允许range()函数在记录分号时接受逗号作为参数分隔符?

为什么jq允许range()函数在记录分号时接受逗号作为参数分隔符?
EN

Stack Overflow用户
提问于 2020-05-07 20:23:43
回答 1查看 38关注 0票数 1

我试图找出为什么jq中的range()函数允许用,分隔参数,而对于其他函数,更普遍的风格是用;分隔参数?我知道一个事实,如果sub()或其他与,一起使用的函数会抛出一个未定义的错误,很可能是因为原型不匹配。

但是为什么range在range(from;upto)原型中是这样的呢?

代码语言:javascript
运行
复制
$ jq -n 'range(0; 4)'
0
1
2
3

代码语言:javascript
运行
复制
$ jq -n 'range(0, 4)'
0
1
2
3

对于使用,range(from;upto;by)行为不正常,但我仍然希望抛出一个警告。

代码语言:javascript
运行
复制
# runs as if did range(0; 2)
$ jq -n 'range(0, 4; 2)'
0
1

代码语言:javascript
运行
复制
# runs as if did range(0; 4) + range(0; 2)
$ jq -n 'range(0; 4, 2)'
0
1
2
3
0
1

jq-1.6jq-1.5中都可以看到这一点。既然官方文档没有讨论涉及,的原型类型,并且不太可能是一个错误,那么应该如何解释,的行为呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 20:31:31

简而言之,jq将range/1定义为:

代码语言:javascript
运行
复制
def range($x): range(0;$x);

因此range(0,$n)的计算结果为

代码语言:javascript
运行
复制
range(0), range($n)

它产生流empty, range($n),它等同于流

代码语言:javascript
运行
复制
range(0;$n)

要点可能是“逗号”运算符可以自由使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61657757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档