Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktOpDcCp 65 of 123 menu
◀ ▶

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

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

data class User(val name: String, val age: Int) fun main() { val ann = User("Ann", 25) val older = ann.copy(age = 26) println(older) }

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

data class Settings(val theme: String, val lang: String) fun main() { 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) fun main() { 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить