Immutability
- Kotlin kursu
- İleri seviye
- Ders 49/83
- 5 dk
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
// User data class: name ve age özellikleri
// main'de u oluştur, copy ile yaşını 31 yap, yazdırÖrnek çözüm
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
____ User(val name: String, val age: Int)
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 |