liste
liste-modulen tilbyr listeoperasjonar inkludert høgareordningsfunksjonar.
bruk listeLister er uforanderlege verdiar — operasjonar returnerer nye lister i staden for å endre originalen.
Grunnleggjande operasjonar
liste.lengd(liste)
Returnerer talet på element.
terminal.skriv(liste.lengd([1, 2, 3])) // 3
terminal.skriv(liste.lengd([])) // 0liste.hent(liste, indeks)
Returnerer elementet ved indeks (0-basert). Kastar IndexOutOfBounds om utanfor rekkevidde.
låst element er ["a", "b", "c"]
terminal.skriv(liste.hent(element, 0)) // a
terminal.skriv(liste.hent(element, 2)) // cliste.leggTil(liste, element)
Returnerer ei ny liste med element lagt til på slutten.
låst original er [1, 2, 3]
låst utvida er liste.leggTil(original, 4)
terminal.skriv(utvida) // [1, 2, 3, 4]
terminal.skriv(original) // [1, 2, 3] (uendra)liste.oppdater(liste, indeks, verdi)
Returnerer ei ny liste med elementet ved indeks erstatta av verdi.
låst tal er [10, 20, 30]
låst oppdatert er liste.oppdater(tal, 1, 99)
terminal.skriv(oppdatert) // [10, 99, 30]liste.ta(liste, antal)
Returnerer dei fyrste antal elementa som ei ny liste.
terminal.skriv(liste.ta([1, 2, 3, 4, 5], 3)) // [1, 2, 3]liste.fyrste(liste)
Returnerer det fyrste elementet. Kastar IndexOutOfBounds på ei tom liste.
terminal.skriv(liste.fyrste([10, 20, 30])) // 10liste.siste(liste)
Returnerer det siste elementet. Kastar IndexOutOfBounds på ei tom liste.
terminal.skriv(liste.siste([10, 20, 30])) // 30Høgareordningsfunksjonar
Alle HOF-funksjonar tek ein etterfølgjande lambda:
liste.gjerOm(liste, fn) — kart
Transformerer kvart element ved å bruke fn. Returnerer ei ny liste av same lengd.
låst dobla er liste.gjerOm([1, 2, 3]) { x -> x * 2 }
terminal.skriv(dobla) // [2, 4, 6]liste.filtrer(liste, predikat) — filter
Returnerer ei ny liste med berre dei elementa som predikat returnerer sant for.
låst partal er liste.filtrer([1, 2, 3, 4, 5]) { x -> matte.modulus(x, 2) erSameSom 0 }
terminal.skriv(partal) // [2, 4]liste.reduser(liste, startverdi, fn) — reduser / brett
Brettar lista til ein einskild verdi. fn tek akkumulatoren og det gjeldande elementet.
låst sum er liste.reduser([1, 2, 3, 4, 5], 0) { akk, x -> akk + x }
terminal.skriv(sum) // 15
låst produkt er liste.reduser([1, 2, 3, 4], 1) { akk, x -> akk * x }
terminal.skriv(produkt) // 24liste.inneheld(liste, predikat) — nokon
Returnerer sant om minst eitt element samsvarar med predikat.
låst harNegativt er liste.inneheld([1, -2, 3]) { x -> x erMindreEnn 0 }
terminal.skriv(harNegativt) // santliste.alle(liste, predikat) — alle
Returnerer sant om alle element samsvarar med predikat.
låst allePositive er liste.alle([1, 2, 3]) { x -> x erStørreEnn 0 }
terminal.skriv(allePositive) // santliste.finn(liste, predikat) — finn
Returnerer det fyrste elementet som samsvarar med predikat, eller inkje om ingen samsvarar.
låst fyrste er liste.finn([1, 5, 3, 8]) { x -> x erStørreEnn 4 }
terminal.skriv(fyrste) // 5liste.sorter(liste) / liste.sorter(liste, komparator)
Returnerer ei ny sortert liste. Utan komparator vert heiltal og desimaltal sortert numerisk og strengar leksikografisk. Med ein komparator fn(a, b) → boolean returnerer funksjonen sant når a skal kome før b.
terminal.skriv(liste.sorter([3, 1, 4, 1, 5])) // [1, 1, 3, 4, 5]
terminal.skriv(liste.sorter(["banan", "eple", "appelsin"]))
// [appelsin, banan, eple]
// Synkande rekkjefølgje med eigen komparator
låst synkande er liste.sorter([3, 1, 4]) { fyrste, andre -> fyrste erStørreEnn andre }
terminal.skriv(synkande) // [4, 3, 1]