Przejdź do głównej zawartości

List.Generate

Generuje listę wartości.

Syntax

List.Generate(
initial as function,
condition as function,
next as function,
optional selector as function
) as list

Remarks

Generuje listę wartości przy użyciu podanych funkcji. Funkcja initial generuje początkową wartość kandydującą, która jest następnie testowana względem condition. Jeśli wartość kandydata zostanie zatwierdzona, zostanie zwrócona jako część listy wynikowej, a następna wartość kandydująca zostanie wygenerowana przez przekazanie nowo zatwierdzonej wartości do next. Gdy wartość kandydatów nie jest zgodna z condition, proces generowania listy zostanie zatrzymany. Można również podać opcjonalny parametr selector, aby przekształcić elementy na liście wynikowej.

Examples

Example #1

Utwórz listę, zaczynając od dziesięciu, wielokrotnie zmniejszając o jeden i upewniając się, że każdy element jest większy od zera.

List.Generate(() => 10, each _ > 0, each _ - 1)

Result:

{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}

Example #2

Wygeneruj listę rekordów zawierającą wartości x i y, gdzie x to wartość, a y to lista. Wartość x ma pozostać mniejsza niż 10 i reprezentować liczbę elementów listy y. Po wygenerowaniu listy mają być zwracane tylko wartości x.

List.Generate(
() => [x = 1, y = {}],
each [x] < 10,
each [x = List.Count([y]), y = [y] & {x}],
each [x]
)

Result:

{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Category

List.Generators