Я пытаюсь выяснить, почему функция range()
в jq
допускает аргументы, разделенные ,
, когда более общий стиль заключается в разделении аргументов ;
для других функций? Я точно знаю, что если sub()
или другие функции, используемые с ,
, вызовут неопределенную ошибку, скорее всего, из-за несоответствия прототипа.
Но почему диапазон ведет себя так для range(from;upto)
prototype
$ jq -n 'range(0; 4)'
0
1
2
3
и
$ jq -n 'range(0, 4)'
0
1
2
3
Для range(from;upto;by)
использование ,
ведет себя некорректно, но я все равно хотел бы, чтобы предупреждение было выдано.
# runs as if did range(0; 2)
$ jq -n 'range(0, 4; 2)'
0
1
и
# runs as if did range(0; 4) + range(0; 2)
$ jq -n 'range(0; 4, 2)'
0
1
2
3
0
1
Это видно как в jq-1.6
, так и в jq-1.5
. Поскольку в официальной документации не говорится о типе прототипа с ,
и это маловероятно, как следует интерпретировать поведение с ,
?