List.Generate
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list
Vygeneruje seznam hodnot pomocí zadaných funkcí. Funkce initial
vygeneruje počáteční kandidátní hodnotu, která se pak testuje proti condition
. Pokud je kandidátská hodnota schválená, vrátí se jako součást výsledného seznamu a další kandidátská hodnota se vygeneruje předáním nově schválené hodnoty next
. Jakmile se kandidátské hodnotě nepodaří shodovat condition
, proces generování seznamu se zastaví. Volitelný parametr , selector
může být také k dispozici k transformaci položek ve výsledném seznamu.
Vytvořte seznam tak, že začnete deset, opakovaně se zmenší o jednu položku a zajistíte, že je každá položka větší než nula.
Využití
List.Generate(() => 10, each _ > 0, each _ - 1)
Výstup
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
Vygenerujte seznam záznamů obsahujících x a y, kde x je hodnota a y je seznam. hodnota x by měla zůstat menší než 10 a představovat počet položek v seznamu y. Po vygenerování seznamu vraťte pouze hodnoty x.
Využití
List.Generate(
() => [x = 1, y = {}],
each [x] < 10,
each [x = List.Count([y]), y = [y] & {x}],
each [x]
)
Výstup
{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}