Jaa


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 conditionkohteeseen . 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 selectorvoidaan 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}