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