0Pricing
Kotlin Academy · Ders

copy() ve Kısmi Geçersiz Kılmalarla Kopyalama

Aslı değiştirmeden değiştirilmiş örnekler oluşturmak için copy() kullanın.

copy() ve Kısmi Geçersiz Kılmalarla Kopyalama, 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.

copy() ile Değişmez Güncellemeler

copy(), bazı özellikleri değiştirilmiş yeni bir veri sınıfı örneği oluşturur. Belirtilmeyen tüm özellikler özgün değerlerini korur.

Temel copy() Kullanımı

Belirli özellikleri geçersiz kılmak için adlandırılmış bağımsız değişkenler gönderin.
data class Person(val name: String, val age: Int, val city: String)
val alice = Person("Alice", 30, "Berlin")
val olderAlice = alice.copy(age = 31)
println(olderAlice)  // Person(name=Alice, age=31, city=Berlin)

Birden Çok Alanı Kopyalama

İhtiyacınız olan kadar alanı geçersiz kılın.
data class Config(val host: String, val port: Int, val ssl: Boolean, val timeout: Int)
val prod = Config("prod.server", 443, true, 30)
val test = prod.copy(host = "test.server", port = 8080, ssl = false)
println(test)

copy Özgün Değeri Değiştirmez

copy her zaman yeni bir nesne oluşturur. Özgün nesne tamamen değişmeden kalır.
data class Point(val x: Int, val y: Int)
val origin = Point(0, 0)
val moved = origin.copy(x = 5)
println(origin)  // Point(x=0, y=0) — unchanged
println(moved)   // Point(x=5, y=0)

Derin Kopya Uyarısı

copy yüzeyseldir. Veri sınıfının içindeki değiştirilebilir nesneler özgün nesne ile kopya arasında paylaşılır.
data class Team(val name: String, val members: MutableList<String>)
val t1 = Team("A", mutableListOf("Alice"))
val t2 = t1.copy(name = "B")
t2.members.add("Bob")       // modifies SHARED list!
println(t1.members)  // [Alice, Bob] ← also changed!

Yüzeysel Kopya Sorunlarından Kaçınma

Paylaşım sorunlarından kaçınmak için veri sınıflarının içinde değişmez veriler kullanın.
data class Team(val name: String, val members: List<String>)  // immutable list
val t1 = Team("A", listOf("Alice"))
val t2 = t1.copy(name = "B", members = t1.members + "Bob")
println(t1.members)  // [Alice]
println(t2.members)  // [Alice, Bob]

Durum Yönetiminde copy

copy, Redux tarzı veya MVI mimarilerinde durumu güncellemenin deyimsel yoludur.
data class UiState(val loading: Boolean, val items: List<String>, val error: String?)
fun reduce(state: UiState, action: Action) = when (action) {
    is Loading -> state.copy(loading = true)
    is Success -> state.copy(loading = false, items = action.data)
    is Error -> state.copy(loading = false, error = action.msg)
}

Varsayılan Parametrelerle copy

Çok sayıda özelliğe sahip veri sınıflarında bile adlandırılmış parametreler sayesinde copy kullanımı pratiktir.
data class Article(
    val id: Long, val title: String, val body: String,
    val published: Boolean = false, val views: Int = 0
)
val draft = Article(1L, "Hello", "Content...")
val published = draft.copy(published = true)
println(published.title)  // Hello

Testlerde copy Kullanımı

copy, test düzeneklerini kolaylaştırır: bir temel nesne oluşturup yalnızca ihtiyacınız olan alanları değiştirin.
val baseUser = User(id = 1, name = "Test", email = "test@test.com", active = true)
val inactiveUser = baseUser.copy(active = false)
val renamed = baseUser.copy(name = "Renamed")

copy ve Builder Örüntüsü Karşılaştırması

Veri sınıfı copy(), Kotlin'in Builder örüntüsüne verdiği yanıttır. Çok sayıda isteğe bağlı alana sahip karmaşık nesneler için veri sınıfı + copy daha özlüdür.
// Java Builder:
User.builder().name("A").age(30).role("admin").build()
// Kotlin:
val u = User("A", 30, "admin")  // or copy from base

Kayıt Anlambilimi

val özelliklerine sahip veri sınıfları Java kayıtları (JDK 16+) gibi davranır: değişmez, değere dayalı ve otomatik olarak yazdırılabilir.
data class RGB(val r: Int, val g: Int, val b: Int)
val white = RGB(255, 255, 255)
println(white)  // RGB(r=255, g=255, b=255)

Hızlı Kontrol

Üzerinde copy() çağırdığınızda özgün veri sınıfı örneğine ne olur?

Özet

copy(), geçersiz kılınmış alanlara sahip yeni bir örnek oluşturur; özgün örnek değişmeden kalır. Durum yönetimi, testler ve oluşturucu tarzı oluşturma için harikadır. Değiştirilebilir özelliklere sahip yüzeysel kopyalara dikkat edin. Sıradaki konu: parçalarına ayırma!

Sıkça Sorulan Sorular

“copy() ve Kısmi Geçersiz Kılmalarla Kopyalama” dersi ücretsiz mi?

Evet — “copy() ve Kısmi Geçersiz Kılmalarla Kopyalama” 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 Kısmi Geçersiz Kılmalarla Kopyalama” dersinde ne öğreneceğim?

Aslı değiştirmeden değiştirilmiş örnekler oluşturmak için copy() kullanın. 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 Kısmi Geçersiz Kılmalarla Kopyalama” 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.

Bu kursun tüm dersleri

  1. Data Sınıfı Temelleri: Otomatik Oluşturulan Yöntemler
  2. copy() ve Kısmi Geçersiz Kılmalarla Kopyalama
  3. componentN ile Yapı Bozma Bildirimleri
  4. Koleksiyonlarda ve Map Anahtarları Olarak Data Sınıfları
← Kotlin Academy Sayfasına Dön