Skapa sekvenser
Från samlingar och generatorer
Skapa sekvenser är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Kotlin Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Academy innehåller totalt 4 lektioner.
Skapa sekvenser
Det finns flera sätt att skapa en Sequence: från befintliga samlingar, från element, med en generatorfunktion eller med en byggare. Den här lektionen går igenom samtliga.
Från en samling med asSequence
Det vanligaste sättet är att anropa asSequence() på en befintlig samling för att bearbeta den med lat utvärdering.
fun main() {
val seq = listOf(1, 2, 3, 4).asSequence()
val result = seq.map { it * 2 }.toList()
println(result)
}Från element med sequenceOf
sequenceOf skapar en sekvens direkt från en fast uppsättning värden.
fun main() {
val seq = sequenceOf("a", "b", "c")
seq.forEach { println(it) }
}Oändliga sekvenser med generateSequence
generateSequence bygger en sekvens, som eventuellt kan vara oändlig, från ett startvärde och en funktion som beräknar nästa element. Kombinera den med take för att begränsa sekvensen.
fun main() {
val powers = generateSequence(1) { it * 2 }
val first5 = powers.take(5).toList()
println(first5)
}Avsluta generateSequence
Om funktionen för nästa element returnerar null avslutas sekvensen. På så sätt kan du generera värden tills ett villkor är uppfyllt.
fun main() {
val countdown = generateSequence(5) { if (it > 1) it - 1 else null }
println(countdown.toList())
}generateSequence utan startvärde
Du kan skicka in en enda lambda som producerar nästa värde eller null. Det är praktiskt när du vill läsa indataströmmar med lat utvärdering.
fun main() {
var n = 0
val seq = generateSequence { if (n < 3) n++ else null }
println(seq.toList())
}Byggaren sequence
Med byggaren sequence { } kan du skapa element imperativt med yield (ett värde) och yieldAll (många värden).
fun main() {
val seq = sequence {
yield(1)
yield(2)
yieldAll(listOf(3, 4))
}
println(seq.toList())
}Lat generering
Byggaren använder också lat utvärdering: koden mellan yield-anropen körs först när element hämtas. Tillsammans med take kan du beskriva oändliga generatorer på ett säkert sätt.
fun main() {
val naturals = sequence {
var i = 1
while (true) {
yield(i)
i++
}
}
println(naturals.take(4).toList())
}Fibonacci med generateSequence
Ett klassiskt exempel är att generera Fibonacci-tal med lat utvärdering och ett Pair som tillstånd.
fun main() {
val fib = generateSequence(Pair(0, 1)) { Pair(it.second, it.first + it.second) }
.map { it.first }
println(fib.take(8).toList())
}Konvertera tillbaka till en samling
En sekvens blir en konkret samling först när du anropar en terminaloperation som toList(), toSet() eller toMutableList().
fun main() {
val set = sequenceOf(1, 2, 2, 3).toSet()
println(set)
}Välja metod för att skapa sekvenser
Använd asSequence() för befintliga data, sequenceOf för fasta värden, generateSequence för beräknade serier och byggaren sequence { } för anpassad imperativ generering.
Snabbkontroll
Hur vet generateSequence när den ska sluta?
Sammanfattning
Du kan skapa sekvenser med asSequence(), sequenceOf, generateSequence (startvärde plus nästa värde, avslutas med null) och byggaren sequence { } med yield/yieldAll. Nästa steg är att se hur lata operationer undviker mellanliggande listor.
Lär dig Kotlin med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 51
- Lektioner
- 203
Vanliga frågor
Är lektionen ”Skapa sekvenser” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”Skapa sekvenser”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Kotlin Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skapa sekvenser”?
Från samlingar och generatorer Ni övar på Kotlin Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Kotlin Academy?
Du behöver inga förkunskaper. Utbildningen i Kotlin Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Skapa sekvenser”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Kotlin Academy-lektionen?
Ja. Varje Kotlin Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.