Spec-Zone.ru › Nushell

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

Выполняет замыкание для каждой строки входного списка, создавая новый список с результатами.

Сигнатура

> each {flags} (closure)

Флаги

  • --keep-empty, -k: Сохранять пустые ячейки результата.
  • --flatten, -f: Объединять выходные данные в один поток вместо сбора их в отдельные значения.

Параметры

  • closure: Замыкание для выполнения.

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

входные данные выходные данные
list<any> list<any>
table list<any>
any any

Примеры

Умножает элементы списка.

> [1 2 3] | each {|e| 2 * $e }
╭───┬───╮
│ 0 │ 2 │
│ 1 │ 4 │
│ 2 │ 6 │
╰───┴───╯

Создаёт список значений записи, преобразованных в строки.

> {major:2, minor:1, patch:4} | values | each {|| into string }
╭───┬───╮
│ 0 │ 2 │
│ 1 │ 1 │
│ 2 │ 4 │
╰───┴───╯

Элементы 'null' будут отброшены из результирующего списка. Это работает так же, как 'filter_map' в других языках.

> [1 2 3 2] | each {|e| if $e == 2 { "two" } }
╭───┬─────╮
│ 0 │ two │
│ 1 │ two │
╰───┴─────╯

Перебирает каждый элемент, создавая список с индексами всех элементов со значением 2.

> [1 2 3] | enumerate | each {|e| if $e.item == 2 { $"found 2 at ($e.index)!"} }
╭───┬───────────────╮
│ 0 │ found 2 at 1! │
╰───┴───────────────╯

Перебирает каждый элемент, сохраняя результаты null.

> [1 2 3] | each --keep-empty {|e| if $e == 2 { "found 2!"} }
╭───┬──────────╮
│ 0 │          │
│ 1 │ found 2! │
│ 2 │          │
╰───┴──────────╯

Обновляет значение, если оно не равно null, иначе ничего не делает.

> $env.name? | each { $"hello ($in)" } | default "bye"

Сканирует несколько файлов без пауз.

> ls *.txt | each --flatten {|f| open $f.name | lines } | find -i 'note: ' | str join "\n"

Примечания

Поскольку таблицы представляют собой списки записей, передача таблицы в 'each' приведёт к перебору каждой записи, а не обязательно каждой ячейки в ней.

Не передавайте этой команде отдельные записи. Запись представляет собой структуру из одной строки, поэтому 'each' выполнится только один раз, подобно 'do'. Чтобы перебрать значения записи, используйте 'items' или сначала преобразуйте её в таблицу с помощью 'transpose'.

По умолчанию для каждого входного элемента возвращается одно выходное значение. Если замыкание возвращает поток, а не значение, поток собирается целиком, а полученное значение становится одним из элементов выходных данных each.

Чтобы получать элементы из этих потоков, не дожидаясь сбора всего потока, можно использовать each --flatten. Вместо того чтобы ждать сбора потока и возвращать результат одним элементом, each --flatten будет возвращать каждый элемент сразу после его получения.

Это «сглаживает» выходные данные, преобразуя результат, который иначе был бы списком списков, например list<list<string>>, в плоский список, например list<string>.

Подкоманды:

имя описание тип
each while Выполняет замыкание для каждой строки входного списка, пока не встретится null, а затем создаёт новый список с результатами. встроенная

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

Spec-Zone.ru

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