Lokale klasser
Klasser i funktioner
Lokale klasser er en gratis Kotlin Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Kotlin Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Kotlin Academy-kurset indeholder 4 lektioner i alt.
Klasser i funktioner
Kotlin lader dig erklære en lokal klasse inde i en funktionskrop. Den er kun synlig i denne funktion.
fun main() {
class Greeting(val text: String) {
fun show() = println(text)
}
Greeting("Hello local").show()
}Begrænset til funktionen
En lokal klasse kan ikke bruges uden for den funktion, hvor den er erklæret, så hjælpe-typer holdes tæt afgrænset.
fun build(): String {
class Builder {
fun make() = "built"
}
return Builder().make()
}
fun main() {
println(build())
}Indfangning af lokale variabler
Ligesom lukninger kan lokale klasser indfange variabler fra den omsluttende funktion.
fun main() {
val prefix = ">> "
class Logger {
fun log(msg: String) = println(prefix + msg)
}
Logger().log("started")
}Flere instanser
Du kan oprette så mange instanser af en lokal klasse, som du ønsker, inden for funktionen.
fun main() {
class Point(val x: Int)
val a = Point(1)
val b = Point(2)
println(a.x + b.x)
}Lokal klasse med metoder
Lokale klasser er fuldgyldige klasser: konstruktører, egenskaber og metoder fungerer alle sammen.
fun main() {
class Account(var balance: Int) {
fun deposit(n: Int) { balance += n }
}
val acc = Account(100)
acc.deposit(50)
println(acc.balance)
}Hvorfor bruge en lokal klasse?
Brug en lokal klasse, når en hjælpetype kun giver mening inde i én funktion, så du undgår at fylde filen med typer på topniveau.
fun parseLine(line: String): Int {
class Token(val value: String)
val tokens = line.split(",").map { Token(it) }
return tokens.size
}
fun main() {
println(parseLine("a,b,c"))
}Indfangning af foranderlig tilstand
En lokal klasse kan ændre indfangede, foranderlige variabler fra det omsluttende omfang.
fun main() {
var total = 0
class Adder {
fun add(n: Int) { total += n }
}
val a = Adder()
a.add(5)
a.add(7)
println(total)
}Lokal implementering af grænseflader
Lokale klasser kan implementere grænseflader, hvilket er nyttigt, når du har brug for en navngiven, genanvendelig implementering i én funktion.
interface Step { fun run(): String }
fun main() {
class First : Step {
override fun run() = "first"
}
println(First().run())
}Lokal kontra anonym
Vælg en lokal klasse, når du har brug for et navn, for eksempel til at oprette flere instanser eller referere til typen. Vælg et anonymt objekt til en enkelt inline-instans.
fun main() {
class Repeater(val times: Int) {
fun run() = "x".repeat(times)
}
println(Repeater(3).run())
}Indlejring i løkker
En lokal klasse kan endda erklæres inde i blokke som løkker, så den begrænses til denne blok.
fun main() {
for (i in 1..2) {
class Tag(val id: Int)
println(Tag(i).id)
}
}En praktisk hjælpetype
Lokale klasser er særligt nyttige til kortlivede domænehjælpetyper, der bruges af præcis én funktion.
fun report(values: List<Int>): String {
class Stats(val sum: Int, val max: Int)
val s = Stats(values.sum(), values.max())
return "sum=${s.sum} max=${s.max}"
}
fun main() {
println(report(listOf(3, 7, 2)))
}Hurtigt tjek
Test din forståelse af lokale klasser.
Opsummering
Du har lært om lokale klasser:
- De erklæres inde i en funktion og begrænses til den.
- De kan indfange og ændre lokale variabler fra det omsluttende område.
- De er fuldgyldige klasser med konstruktører, egenskaber, metoder og grænseflader.
- Brug en lokal klasse, når du har brug for et navn; brug et anonymt objekt til en enkelt inline-instans.
fun main() {
val tag = "L"
class C { fun show() = tag }
println(C().show())
}Lær Kotlin med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “Lokale klasser” gratis?
Ja — alle 3 lektioner i læringssporet Kotlin Academy, inklusive “Lokale klasser”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Kotlin Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Lokale klasser”?
Klasser i funktioner Du øver dig i Kotlin Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Kotlin Academy?
Der kræves ingen tidligere erfaring. Kotlin Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Lokale klasser”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Kotlin Academy-lektion?
Ja. Alle Kotlin Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Nøstede klasser
- Indre klasser
- Anonyme objekter
- Lokale klasser