Store related values in a small data class.

data A data class gives a name to a bundle of related fields.

Data Classes Intro

lessons
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")
}
  1. 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
  1. 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
  1. 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

  1. Course stores a title and a lessons count.
  2. lessons starts at 4.
  3. title is Basics.
  4. Reading the course fields gives Basics and 4.
  5. The program prints title=Basics and lessons=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.