Spec-Zone.ru › Nushell

reduce для фильтров

Сводит список (начиная слева) к одному значению с помощью замыкания-аккумулятора.

Сигнатура

> reduce {flags} (closure)

Флаги

  • --fold, -f {any}: сведение с начальным значением.

Параметры

  • closure: функция сведения.

Типы входных и выходных данных:

вход выход
list<any> any
table any
range any

Примеры

Суммирование значений списка (аналогично 'math sum').

> [ 1 2 3 4 ] | reduce {|it, acc| $it + $acc }
10

reduce накапливает значение слева направо, что эквивалентно (((1 - 2) - 3) - 4).

> [ 1 2 3 4 ] | reduce {|it, acc| $acc - $it }
-8

Суммирование значений списка вместе с их индексами.

> [ 8 7 6 ] | enumerate | reduce --fold 0 {|it, acc| $acc + $it.item + $it.index }
24

Суммирование значений списка с начальным значением (свёртка).

> [ 1 2 3 4 ] | reduce --fold 10 {|it, acc| $acc + $it }
20

Последовательная замена строк слева направо: 'foobar' -> 'bazbar' -> 'quuxbar'.

> [[foo baz] [baz quux]] | reduce --fold "foobar" {|it, acc| $acc | str replace $it.0 $it.1}
quuxbar

Замена выбранных символов в строке на 'X'.

> [ i o t ] | reduce --fold "Arthur, King of the Britons" {|it, acc| $acc | str replace --all $it "X" }
ArXhur, KXng Xf Xhe BrXXXns

Добавление возрастающих чисел к именам файлов и их объединение точками с запятой.

> ['foo.gz', 'bar.gz', 'baz.gz'] | enumerate | reduce --fold '' {|str all| $"($all)(if $str.index != 0 {'; '})($str.index + 1)-($str.item)" }
1-foo.gz; 2-bar.gz; 3-baz.gz

Конкатенация строки с самой собой; диапазон определяет количество повторений.

> let s = "Str"; 0..2 | reduce --fold '' {|it, acc| $acc + $s}
StrStrStr

Объединение нескольких записей с использованием того факта, что накопленное значение также передаётся в замыкание как входные данные конвейера.

> [{a: 1} {b: 2} {c: 3}] | reduce {|it| merge $it}
╭───┬───╮
│ a │ 1 │
│ b │ 2 │
│ c │ 3 │
╰───┴───╯

Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/reduce.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API