List.Generate
Składnia
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list
Informacje o
Generuje listę wartości przy użyciu podanych funkcji. Funkcja initial
generuje początkową wartość kandydata, która jest następnie testowana względem condition
. Jeśli wartość kandydata zostanie zatwierdzona, zostanie ona zwrócona jako część wynikowej listy, a następna wartość kandydata zostanie wygenerowana przez przekazanie nowo zatwierdzonej wartości do next
. Gdy wartość kandydata nie będzie zgodna z condition
, proces generowania listy zostanie zatrzymany. Opcjonalny parametr, selector
, można również podać, aby przekształcić elementy na wynikowej liście.
Przykład 1
Utwórz listę, zaczynając od dziesięciu, wielokrotnie dekrementując ją, i upewniając się, że każdy element jest większy niż zero.
Użycie
List.Generate(() => 10, each _ > 0, each _ - 1)
Wyjście
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
Przykład 2
Wygeneruj listę rekordów zawierających wartości x i y, gdzie x jest wartością, a y jest listą. wartość x powinna pozostać mniejsza niż 10 i reprezentować liczbę elementów na liście y. Po wygenerowaniu listy zwróć tylko wartości dla x.
użycie
List.Generate(
() => [x = 1, y = {}],
each [x] < 10,
each [x = List.Count([y]), y = [y] & {x}],
each [x]
)
Wyjście
{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}