Čítať v angličtine

Zdieľať cez


List.Generate

Syntax

List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list

Informácie

Vygeneruje zoznam hodnôt pomocou zadaných funkcií. Funkcia initial vygeneruje počiatočnú hodnotu kandidáta, ktorá sa potom testuje na conditionhodnote . Ak sa hodnota kandidáta schváli, vráti sa ako súčasť výsledného zoznamu a ďalšia hodnota kandidáta sa vygeneruje odovzdaním novo schválenej hodnoty do next. Akonáhle sa hodnota kandidáta nepodarí nájsť zhodu condition, proces generovania zoznamu sa zastaví. Ak chcete transformovať položky vo výslednom zozname, selectormožno zadať aj voliteľný parameter .

Príklad č. 1

Vytvorte zoznam tak, že začnete o desať, opakovane sa znižuje o jeden a každá položka bude väčšia ako nula.

Použitie

List.Generate(() => 10, each _ > 0, each _ - 1)

Výkon

{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}

Príklad č. 2

Vygenerujte zoznam záznamov obsahujúcich hodnoty x a y, pričom x predstavuje hodnotu a y zoznam. x by malo zostať menšie ako 10 a predstavovať počet položiek v zozname y. Po vygenerení zoznamu sa vrátia iba hodnoty x.

Použitie

List.Generate(
    () => [x = 1, y = {}],
    each [x] < 10,
    each [x = List.Count([y]), y = [y] & {x}],
    each [x]
)

Výkon

{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}