List.Generate
Syntaksi
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list
Tietoja
Muodostaa arvoluettelon annetuilla funktioilla. Funktio initial
luo aloitusehdokkaan arvon, joka testataan sitten suhteessa condition
kohteeseen . Jos ehdokasarvo hyväksytään, se palautetaan osana tuloksena saatavaa luetteloa, ja seuraava hakijaarvo luodaan siirtämällä uusi hyväksytty arvo kohteeseen next
. Kun ehdokasarvo ei täsmää condition
, luettelon luontiprosessi pysäytetään. Valinnainen parametri selector
voidaan antaa myös tuloksena saatavan luettelon kohteiden muuntamista varten.
Esimerkki 1
Luo luettelo aloittamalla kymmenestä: pienennä toistuvasti yhdellä ja varmista, että jokainen kohde on suurempi kuin nolla.
Käyttö
List.Generate(() => 10, each _ > 0, each _ - 1)
Tuloste
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
Esimerkki 2
Luo luettelon tietueista, jotka sisältävät x:n ja y:n, jossa x on arvo ja y on luettelo. x:n on oltava alle 10 ja vastattava y-luettelossa olevien kohteiden määrää. Kun luettelo on muodostettu, palauta vain x-arvot.
Käyttö
List.Generate(
() => [x = 1, y = {}],
each [x] < 10,
each [x = List.Count([y]), y = [y] & {x}],
each [x]
)
Tuloste
{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}