Kotlin Academy · Lektion

Deklarera dataklasser

Kompakta modellklasser

Lektion 1 av 413 steg

Deklarera dataklasser är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 1 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.

Klasser för att lagra data

Många klasser finns endast för att samla några värden: en användare, en punkt eller ett resultat.

Kotlin ger er dataklassen, ett kortfattat sätt att deklarera sådana modellklasser med mycket funktionalitet på köpet.

Deklarera en dataklass

Lägg till nyckelordet data före class och ange egenskaperna i konstruktorn.

Den enda raden ger er en komplett modell.

data class User(val name: String, val age: Int)

fun main() {
    val u = User("Alice", 30)
    println(u.name)
    println(u.age)
}

Automatiskt genererad toString

En dataklass genererar automatiskt en läsbar toString(). När objektet skrivs ut visas klassnamnet och egenskapsvärdena.

Jämför detta med en vanlig klass, som skulle skriva ut en svårtolkad hash.

data class User(val name: String, val age: Int)

fun main() {
    val u = User("Bob", 25)
    println(u)
}

Egenskaper krävs

En dataklass måste deklarera minst en egenskap i sin primärkonstruktor.

Varje parameter bör vara val eller var så att den blir en egenskap som de genererade funktionerna kan använda.

data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(3, 4)
    println(p)
}

Egenskaper med val och var

Använd val för skrivskyddade egenskaper och var för föränderliga.

Oföränderliga dataklasser föredras vanligtvis eftersom de är lättare att förstå och resonera om.

data class Counter(var count: Int)

fun main() {
    val c = Counter(0)
    c.count = 5
    println(c)
}

Standardvärden för parametrar

Precis som alla konstruktorer kan en dataklass ha standardvärden.

Det gör att anropare kan utelämna parametrar som de inte behöver ange.

data class User(val name: String, val active: Boolean = true)

fun main() {
    val u = User("Mia")
    println(u)
}

Namngivna argument

Kombinera dataklasser med namngivna argument för en tydlig och självförklarande konstruktion.

Det är särskilt användbart när flera egenskaper har samma typ.

data class Rect(val width: Int, val height: Int)

fun main() {
    val r = Rect(width = 10, height = 5)
    println(r)
}

Lägga till metoder

En dataklass kan fortfarande ha en klasskropp med egna funktioner och beräknade egenskaper.

De genererade funktionerna finns sida vid sida med det ni lägger till.

data class Circle(val radius: Double) {
    fun area(): Double = 3.14159 * radius * radius
}

fun main() {
    val c = Circle(2.0)
    println(c.area())
}

Egenskaper utanför konstruktorn

Endast egenskaper i primärkonstruktorn används av de genererade funktionerna.

En egenskap som deklareras i klasskroppen är en del av objektet, men ignoreras av toString, equals och liknande.

data class User(val name: String) {
    var nickname: String = ""
}

fun main() {
    val u = User("Alex")
    u.nickname = "Al"
    println(u) // nickname not shown
    println(u.nickname)
}

När ska dataklasser användas

Välj en dataklass när ett objekt huvudsakligen innehåller värden:

  • DTO:er och API-modeller
  • Koordinater, intervall och resultat
  • Konfigurationssamlingar

Undvik dem för klasser som bygger på komplex funktionalitet eller arv.

Sätta ihop delarna

En dataklass är en kompakt modelldeklaration:

  • Inled med data och ange egenskaperna
  • Få toString, equals, hashCode och copy automatiskt
  • Stöder standardvärden, namngivna argument och extra metoder
data class Book(val title: String, val pages: Int = 0)

fun main() {
    val b = Book(title = "Kotlin", pages = 300)
    println(b)
}

Snabbkontroll

Testa er förståelse av hur dataklasser deklareras.

Sammanfattning

Ni har lärt er att deklarera dataklasser:

  • Nyckelordet data genererar standardfunktioner
  • Egenskaper i konstruktorn styr det genererade beteendet
  • Standardvärden och namngivna argument gör dem flexibla

Härnäst utforskar ni de genererade funktionerna copy och equals mer ingående.

Gratis att börja

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 ”Deklarera dataklasser” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”Deklarera dataklasser”, 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 ”Deklarera dataklasser”?

Kompakta modellklasser 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 1 av 4.

Hur lång tid tar lektionen ”Deklarera dataklasser”?

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.

Alla lektioner i den här kursen

  1. Deklarera dataklasser
  2. copy och equals
  3. Destrukturerande deklarationer
  4. Dataklasser i samlingar
← Tillbaka till Kotlin Academy