Sdílet prostřednictvím


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}