copy ve equals
Oluşturulan işlevler
copy ve equals, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Oluşturulan İşlevler
toString işlevinin yanı sıra bir veri sınıfı equals, hashCode ve copy işlevlerini de oluşturur.
Bu üç işlev, veri sınıflarını karşılaştırmayı ve kopyalamayı keyifli hâle getirir.
Yapısal Eşitlik
Oluşturulan equals işlevi nesneleri kimliklerine göre değil, özellik değerlerine göre karşılaştırır.
Aynı değerlere sahip iki veri sınıfı örneği == ile eşit kabul edilir.
data class User(val name: String, val age: Int)
fun main() {
val a = User("Alice", 30)
val b = User("Alice", 30)
println(a == b)
}Farklı Değerler Eşit Değildir
Herhangi bir özelliği değiştirirseniz nesneler artık eşit olmaz.
Eşitlik, birincil oluşturucudaki her özellik kullanılarak hesaplanır.
data class User(val name: String, val age: Int)
fun main() {
val a = User("Alice", 30)
val b = User("Alice", 31)
println(a == b)
}Eşitlik ve Kimlik
Değer (yapısal) eşitliği için ==, başvuru (kimlik) eşitliği için === kullanın.
Eşit olan iki veri nesnesi bellekte farklı örnekler olabilir.
data class User(val name: String)
fun main() {
val a = User("Alice")
val b = User("Alice")
println(a == b) // values match
println(a === b) // different instances
}Tutarlı hashCode
hashCode, equals ile uyumlu olacak şekilde oluşturulur: eşit nesneler aynı özeti üretir.
Veri sınıflarının kümelerde ve harita anahtarları olarak doğru çalışmasını sağlayan şey budur.
data class Point(val x: Int, val y: Int)
fun main() {
val a = Point(1, 2)
val b = Point(1, 2)
println(a.hashCode() == b.hashCode())
}copy İşlevi
copy, aslıyla aynı olan yeni bir nesne oluşturur.
Değişmez val özellikleriyle kopyalama, değiştirilmiş bir sürüm oluşturmanın yoludur.
data class User(val name: String, val age: Int)
fun main() {
val a = User("Alice", 30)
val b = a.copy()
println(b)
println(a == b)
}Değişikliklerle Kopyalama
Geri kalanını korurken belirli özellikleri değiştirmek için copy işlevine adlandırılmış bağımsız değişkenler geçirin.
Bu, değişmez verileri güncellemenin standart biçimidir.
data class User(val name: String, val age: Int)
fun main() {
val a = User("Alice", 30)
val older = a.copy(age = 31)
println(a)
println(older)
}copy Aslı Değiştirmez
copy kaynak nesneyi hiçbir zaman değiştirmez. Asıl nesne kendi değerlerini korur.
Bu değişmezlik, durum değişikliklerini öngörülebilir ve güvenli hâle getirir.
data class Account(val owner: String, val balance: Int)
fun main() {
val original = Account("Sam", 100)
val updated = original.copy(balance = 150)
println(original.balance)
println(updated.balance)
}Kopyaları Zincirleme
copy yeni bir nesne döndürdüğü için art arda birkaç güncelleme uygulayabilirsiniz.
Her adım yeni ve bağımsız bir değer üretir.
data class Config(val volume: Int, val muted: Boolean)
fun main() {
val base = Config(50, false)
val result = base.copy(volume = 70).copy(muted = true)
println(result)
}Yalnızca Oluşturucu Özellikleri Sayılır
Eşitlikte olduğu gibi copy de yalnızca birincil oluşturucu özelliklerini işler.
Gövde özellikleri kopyada varsayılan değerlerine sıfırlanır; bu nedenle önemli durumu oluşturucuda tutun.
data class User(val name: String) {
var note: String = "none"
}
fun main() {
val a = User("Alice")
a.note = "VIP"
val b = a.copy()
println(b.note) // back to default
}Bir Araya Getirme
Oluşturulan işlevler veri sınıflarına gücünü verir:
equalsve==değere göre karşılaştırırhashCode, equals ile tutarlı kalırcopy, isteğe bağlı değişikliklerle kopya oluşturur
data class User(val name: String, val age: Int)
fun main() {
val a = User("Alice", 30)
val b = a.copy(name = "Alicia")
println(a == b)
println(b)
}Hızlı Kontrol
copy ve equals konusundaki anlayışınızı sınayın.
Özet
Veri sınıflarının oluşturulan işlevlerini öğrendiniz:
- equals değere göre karşılaştırır;
==ile===arasındaki farkı gözetir - hashCode koleksiyonlar için tutarlı kalır
- copy seçili değişikliklerle kopya oluşturur
Sırada nesneleri değişkenlere açmak için yapı bozmanın nasıl kullanıldığını öğreneceksiniz.
Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 51
- Dersler
- 203
Sıkça Sorulan Sorular
“copy ve equals” dersi ücretsiz mi?
Evet — “copy ve equals” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“copy ve equals” dersinde ne öğreneceğim?
Oluşturulan işlevler Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“copy ve equals” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.