List.Generate
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list
Vygeneruje zoznam hodnôt pomocou zadaných funkcií. Funkcia initial
vygeneruje počiatočnú hodnotu kandidáta, ktorá sa potom testuje na condition
hodnote . 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, selector
možno zadať aj voliteľný parameter .
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}
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}