Destructuring
- Kotlin kursu
- Orta seviye
- Ders 17/116
- 5 dk
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
// 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
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
val p = Point(3, 4)
val ____ = p
println(a)
println(b)
val p = Point(3, 4)
val (a, b) = p
println(a)
println(b)
Açıklama: (a, b) ile iki bileşen ayrılır.