Программисты больше не нужны!
Нужны ИИ инженеры! Хотите научиться? Вступайте в канал!
⊗ktOpDcCp 65 of 123 menu
◀ ▶

Копирование data class в Kotlin

Присваивание объекта другой переменной копирует ссылку, а не отдельный экземпляр - исходный и новый указатель делят одни и те же поля. Метод copy у data class создаёт новый объект с теми же полями, что и исходный. В вызове можно указать только те параметры, которые нужно заменить - остальные возьмутся из текущего значения:

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

Создадим объект:

val ann = User("Ann", 25) val older = ann.copy(age = 26) println(older)

Исходный объект не меняется: copy возвращает отдельный экземпляр. Так удобно обновлять записи с val-полями, не нарушая неизменяемость:

data class Settings(val theme: String, val lang: String)

Создадим объект:

val base = Settings("light", "en") val dark = base.copy(theme = "dark") println(base.theme) println(dark.theme)

Имена аргументов в copy совпадают с именами свойств. Можно передать несколько полей сразу, если нужно изменить больше одного значения:

data class Job(val role: String, val level: Int)

Создадим объект:

val j = Job("dev", 1) val promoted = j.copy(role = "lead", level = 2) println(promoted)

Сделайте data class Price с полями label и amount. Дан объект:

val old = Price("basic", 10)

Получите копию объекта с тем же label и amount = 15. Выведите на экран оба объекта в двух строках.

Сделайте data class Route с полями from, to, stops. Создайте маршрут "A" - "B" с 0 остановками. Получите копию маршрута с stops = 2 и выведите на экран только новый объект.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить