List.Generate
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list
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
elementu . 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 condition
z wartością , proces generowania listy zostanie zatrzymany. Opcjonalny parametr , selector
można również podać, aby przekształcić elementy na wynikowej liście.
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}
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 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}