Spec-Zone.ru › Nushell

generate для генераторов

Создаёт список значений, последовательно вызывая замыкание.

Сигнатура

> generate {flags} (closure) (initial)

Параметры

  • closure: Функция-генератор.
  • initial: Начальное значение.

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

входные данные выходные данные
ничего list<any>
list<any> list<any>
таблица list<any>
диапазон list<any>

Примеры

Создать последовательность чисел

> generate {|i| if $i <= 10 { {out: $i, next: ($i + 2)} }} 0
╭───┬────╮
│ 0 │  0 │
│ 1 │  2 │
│ 2 │  4 │
│ 3 │  6 │
│ 4 │  8 │
│ 5 │ 10 │
╰───┴────╯

Создать непрерывный поток чисел Фибоначчи

> generate {|fib| {out: $fib.0, next: [$fib.1, ($fib.0 + $fib.1)]} } [0, 1]

Создать непрерывный поток чисел Фибоначчи, используя параметры по умолчанию

> generate {|fib=[0, 1]| {out: $fib.0, next: [$fib.1, ($fib.0 + $fib.1)]} }

Вычислить нарастающую сумму входных значений

> 1..5 | generate {|e, sum=0| let sum = $e + $sum; {out: $sum, next: $sum} }
╭───┬────╮
│ 0 │  1 │
│ 1 │  3 │
│ 2 │  6 │
│ 3 │ 10 │
│ 4 │ 15 │
╰───┴────╯

Примечания

Замыкание-генератор принимает один аргумент и возвращает запись с двумя необязательными ключами: 'out' и 'next'. При каждом вызове значение 'out', если оно есть, добавляется в поток. Если присутствует ключ 'next', его значение используется как следующий аргумент замыкания; в противном случае генерация прекращается.

Кроме того, если предоставлен входной поток, замыкание-генератор принимает два аргумента. При каждом вызове элемент входного потока передаётся в качестве первого аргумента. Второй аргумент — это значение next, полученное при последнем вызове. В этом случае генерация также прекращается, когда заканчивается входной поток.

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

Spec-Zone.ru

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