CodeBlanks Logo Icon CodeBlanks

Destructuring

componentN ve destructuring declaration öğrenirsin.

componentN ve destructuring

Data sınıfları her özellik için bir componentN metodu üretir: component1, component2 vb. Bu metotlar destructuring declaration ile özellikleri tek tek değişkenlere ayırır.

Örnek: val (x, y) = point. Bu satır point.component1() ve point.component2() çağırır, sonuçları sırayla x ve y'ye atar. Pair ve Triple gibi standart sınıflar da bu kalıbı destekler. Döngü içinde for ((k, v) in map) biçiminde de kullanılır.

Döngüde destructuring

Destructuring, for döngüsünde de kullanılabilir. Bu, özellikle bir listenin öğelerini ayrıştırmak için elverişlidir.

Örnek: for ((name, age) in users) { println("$name - $age") }. Burada her users öğesi iki bileşene ayrılır. List, Pair ve Map.Entry bu kalıbı destekler. Atama yapmak istemezsen _ ile bir bileşeni atlayabilirsin: val (name, _) = user.

Uygulama Point veri sınıfı ile destructuring

Point adında bir veri sınıfı tanımla; primary constructor val x: Int, val y: Int alsın. main içinde Point(3, 4) örneğini oluştur ve destructuring ile a ve b değişkenlerine ayır. a ve b'yi ayrı ayrı println ile yazdır.

Başlangıç kodu

Main.kt
// Point veri sınıfı tanımı
// x ve y özellikleri ile
// main'de örnekle, destructuring ile ayır
// a ve b'yi yazdır

Örnek çözüm

Main.kt
data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(3, 4)
    val (a, b) = p
    println(a)
    println(b)
}

Beklenen çıktı

3
4

Soru ve cevaplar

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

1 <code>val (a, b) = point</code> satırı ne yapar?

  • point'i a ve b'ye böler ve hata verir
  • point.component1() ve component2()'yi çağırıp a ve b'ye atar Doğru cevap
  • point'i siler
  • a ve b'yi point'e kopyalar

Açıklama: destructuring, componentN metotlarını çağırır.

2 destructuring kalıplarını eşle

Kavram Anlamı
val (x, y) = p İki bileşene ayır
component1() Birinci özellik
val (n, _) İkinciyi atla
for ((k, v) in m) Döngüde ayır

3 Destructuring bildirimini tamamla

Soru
val p = Point(3, 4)
val ____ = p
println(a)
println(b)
Cevap
val p = Point(3, 4)
val (a, b) = p
println(a)
println(b)

Açıklama: (a, b) ile iki bileşen ayrılır.

Orta seviye bölümündeki tüm dersler