List.Generate
Syntax
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list
Asi
Vygeneruje seznam hodnot pomocí zadaných funkcí. Funkce initial
vygeneruje počáteční hodnotu kandidáta, která se pak testuje proti condition
. Pokud je kandidátská hodnota schválena, 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 do next
. Jakmile se kandidátská hodnota neshoduje s condition
, proces generování seznamu se zastaví. Volitelný parametr, selector
, lze také poskytnout k transformaci položek ve výsledném seznamu.
Příklad 1
Vytvořte seznam tak, že začnete od deseti, opakovaně snižujte o jednu a zajistěte, aby každá položka byla 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}
Příklad 2
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}