CodeBlanks Logo Icon CodeBlanks

Immutability

val ve data class ile immutability öğrenirsin.

Immutability ve data class

Immutability, bir nesne oluşturulduktan sonra değişmemesidir. Kotlin'de data class ve val özellikleri ile sağlanır. data class otomatik olarak copy metodu üretir.

Örnek: data class User(val name: String, val age: Int). Bir özelliği değiştirmek için user.copy(age = 31) çağrılır; bu, yeni bir User döndürür. Orijinal nesne değişmez. Bu kalıp, eşzamanlılık hatalarını azaltır ve kodu daha öngörülebilir kılar.

val ve var farkı

val ile tanımlanan değişkenler tek sefer atanır; sonradan değiştirilemez. var ise tekrar atanabilir. Immutability için val tercih edilir.

Örnek: val name = "Ayşe" atamasından sonra name = "Fatma" derleme hatası verir. var name = "Ayşe" ise tekrar atanabilir. Fonksiyonel stilde val önceliklidir; yan etkileri azaltır ve kod okunurluğunu artırır.

Uygulama copy ile yaş güncelle

User adında data class tanımla; val name: String ve val age: Int özellikleri olsun. main içinde val u = User("Ayşe", 30) oluştur, u.copy(age = 31) ile u2 oluştur ve println(u2) yazdır.

Başlangıç kodu

Main.kt
// User data class: name ve age özellikleri
// main'de u oluştur, copy ile yaşını 31 yap, yazdır

Örnek çözüm

Main.kt
data class User(val name: String, val age: Int)

fun main() {
    val u = User("Ayşe", 30)
    val u2 = u.copy(age = 31)
    println(u2)
}

Beklenen çıktı

User(name=Ayşe, age=31)

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir data class örneğinin bir özelliğini değiştirmek için hangi metot kullanılır?

  • update
  • set
  • mutate
  • copy Doğru cevap

Açıklama: copy metodu yeni bir değiştirilmiş nesne döndürür.

2 data class tanımını tamamla

Soru
____ User(val name: String, val age: Int)
Cevap
data User(val name: String, val age: Int)

Açıklama: data class otomatik copy ve equals üretir.

3 Immutability parçalarını eşle

Kavram Anlamı
data class Immutable sınıf
val Tek sefer atama
copy(age=31) Yeni nesne
var Tekrar atanabilir

İleri seviye bölümündeki tüm dersler