List.Generate
Syntaksi
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list
Noin
Muodostaa arvoluettelon annetuilla funktioilla.
initial
funktio luo aloitusehdokkaan arvon, joka testataan sitten condition
. Jos ehdokasarvo hyväksytään, se palautetaan osana tuloksena saatavaa luetteloa, ja seuraava ehdokasarvo luodaan välittämällä juuri hyväksytty arvo next
. Kun ehdokasarvo ei täsmää condition
, luettelon luontiprosessi pysäytetään. Valinnainen parametri, selector
, voidaan myös antaa 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)
Output
{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]
)
Output
{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}