Data Types
Data Classes Intro
Store related values in a small data class.
data
A data class gives a name to a bundle of related fields.
Data Classes Intro
DataClassesIntro.kt
Replay: real traced execution (multi-file project)
data class Course(val title: String, val lessons: Int)
fun main() {
val lessons = 4
val title = "Basics"
val courseTitle = Course(title, lessons).title
val totalLessons = Course(title, lessons).lessons
println("title=$courseTitle")
println("lessons=$totalLessons")
}
data class Course(val title: String, val lessons: Int)
fun main() {
val lessons = 2
val title = "Basics"
val courseTitle = Course(title, lessons).title
val totalLessons = Course(title, lessons).lessons
println("title=$courseTitle")
println("lessons=$totalLessons")
}
data class Course(val title: String, val lessons: Int)
fun main() {
val lessons = 6
val title = "Basics"
val courseTitle = Course(title, lessons).title
val totalLessons = Course(title, lessons).lessons
println("title=$courseTitle")
println("lessons=$totalLessons")
}
lessons ← 4, title ← Basics, courseTitle ← Basics, totalLessons ← 4
3fun main() {4 val lessons→ 4 = 4 //@lessons=2, 65 val title→ Basics = "Basics"6 val courseTitle→ Basics = Course(titleBasics, lessons4).title7 val totalLessons→ 4 = Course(titleBasics, lessons4).lessons89 println("title=$courseTitleBasics")10 println("lessons=$totalLessons4")11}outputtitle=Basics lessons=4
lessons ← 2, title ← Basics, courseTitle ← Basics, totalLessons ← 2
3fun main() {4 val lessons→ 2 = 25 val title→ Basics = "Basics"6 val courseTitle→ Basics = Course(titleBasics, lessons2).title7 val totalLessons→ 2 = Course(titleBasics, lessons2).lessons89 println("title=$courseTitleBasics")10 println("lessons=$totalLessons2")11}outputtitle=Basics lessons=2
lessons ← 6, title ← Basics, courseTitle ← Basics, totalLessons ← 6
3fun main() {4 val lessons→ 6 = 65 val title→ Basics = "Basics"6 val courseTitle→ Basics = Course(titleBasics, lessons6).title7 val totalLessons→ 6 = Course(titleBasics, lessons6).lessons89 println("title=$courseTitleBasics")10 println("lessons=$totalLessons6")11}outputtitle=Basics lessons=6
Follow the Course
Coursestores atitleand alessonscount.lessonsstarts at4.titleisBasics.- Reading the course fields gives
Basicsand4. - The program prints
title=Basicsandlessons=4. | lessons input | printed title | printed lessons | | --- | --- | --- | | 2 | Basics | 2 | | 4 | Basics | 4 | | 6 | Basics | 6 |
Exercise: DataClassesIntro.kt
Reproduce lessons=4, then use the pinned lesson counts 2 and 6 to predict the changed lessons line.