Udostępnij za pośrednictwem


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}