Zdieľať cez


List.Generate

Syntax

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

O

Vygeneruje zoznam hodnôt pomocou zadaných funkcií. Funkcia initial vygeneruje počiatočnú hodnotu kandidáta, ktorá sa potom testuje na condition. Ak sa hodnota kandidáta schváli, vráti sa ako súčasť výsledného zoznamu a nasledujúca hodnota kandidáta sa vygeneruje odovzdaním novoschválenej hodnoty do next. Keď sa hodnota kandidáta nepodarí zodpovedať condition, proces generovania zoznamu sa zastaví. Ak chcete transformovať položky vo výslednom zozname, možno poskytnúť aj voliteľný parameter selector.

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žívania

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

výstupu

{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žívania

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

výstupu

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