НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1257 of 1310 menu

Функция copy

Функция copy автоматически генерируется компилятором Kotlin для всех data-классов. Она позволяет создавать копию существующего объекта с возможностью изменения значений отдельных свойств. При этом исходный объект остается неизменным.

Синтаксис

fun copy( prop1: Type1 = this.prop1, prop2: Type2 = this.prop2, ... propN: TypeN = this.propN ): ClassName

Пример

Создадим data-класс User и используем функцию copy для создания копии с изменением одного свойства:

data class User(val name: String, val age: Int, val email: String) val user1 = User("John", 25, "john@example.com") val user2 = user1.copy(age = 30) println(user1) println(user2)

Результат выполнения кода:

User(name=John, age=25, email=john@example.com) User(name=John, age=30, email=john@example.com)

Пример

Изменим несколько свойств одновременно с помощью функции copy:

data class Product(val id: Int, val name: String, val price: Double, val category: String) val product1 = Product(1, "Laptop", 999.99, "Electronics") val product2 = product1.copy(price = 899.99, category = "Sale") println(product1) println(product2)

Результат выполнения кода:

Product(id=1, name=Laptop, price=999.99, category=Electronics) Product(id=1, name=Laptop, price=899.99, category=Sale)

Пример

Создание полной копии объекта без изменения свойств:

data class Point(val x: Int, val y: Int) val original = Point(10, 20) val copy = original.copy() println("Original: $original") println("Copy: $copy") println("Are equal: ${original == copy}") println("Are same object: ${original === copy}")

Результат выполнения кода:

Original: Point(x=10, y=20) Copy: Point(x=10, y=20) Are equal: true Are same object: false

Пример

Использование функции copy для создания модифицированных копий в цепочке вызовов:

data class Config(val host: String, val port: Int, val timeout: Int, val ssl: Boolean) val defaultConfig = Config("localhost", 8080, 5000, false) val productionConfig = defaultConfig .copy(host = "api.example.com") .copy(port = 443) .copy(ssl = true) .copy(timeout = 10000) println(productionConfig)

Результат выполнения кода:

Config(host=api.example.com, port=443, timeout=10000, ssl=true)

Смотрите также

  • функцию equals,
    которая сравнивает объекты по содержимому
  • функцию hashCode,
    которая генерирует хэш-код для объекта
  • функцию toString,
    которая возвращает строковое представление объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить