Junior
Kotlin'da data sinflarini qanday amalga oshirish va foydalanish mumkin?
sobes.tech AI
AIdan javob
Ma'lumotlar sinflari ma'lumotlarni saqlash uchun ishlatiladi. Kompilyator ular uchun equals(), hashCode(), toString(), copy() va componentN() funksiyalarini avtomatik ravishda yaratadi.
Joriy qilish: data prefiksi bilan sinfni e'lon qilish.
data class User(val name: String, val age: Int)
Foydalanish:
Namuna yaratish:
val user = User("Alice", 30)
Xususiyatlarga kirish:
val name = user.name // Alice
val age = user.age // 30
Yaratilgan metodlardan foydalanish:
println(user.toString()) // User(name=Alice, age=30)
boshqaUser = User("Alice", 30)
println(user == anotherUser) // true (equals() avtomatik)
eskiUser = user.copy(age = 31) // User(name=Alice, age=31)
userName, userAge = user // Destructuring
println("Ism: $userName, Yoshi: $userAge") // Ism: Alice, Yoshi: 30
Xususiyatlar:
- Barcha asosiy konstruktor parametrlar
valyokivarbo'lishi kerak. - Ma'lumotlar sinflari
abstract,open,sealedyokiinnerbo'lishi mumkin emas. - Sinf tanasidagi xususiyatlar metodlar (
equals,hashCode,copy,componentN()) generatsiyasida qatnashmaydi.
data class Person(val name: String) {
var height: Int = 0 // `equals`, `hashCode`, `copy`, `componentN()` ga qatnashmaydi
}
val p1 = Person("Bob")
p1.height = 180
val p2 = Person("Bob")
p2.height = 190
println(p1 == p2) // true