by map
- Kotlin kursu
- Orta seviye
- Ders 72/116
- 5 dk
by map ile dinamik özellik öğrenirsin.
by map delegasyonu
Bir özelliği bir Map'e delege edebilirsin. Örnek: class User(val map: Map<String, Any?>) { val name: String by map; val age: Int by map }. Burada name ve age özellikleri map'ten okunur; anahtar özellik adıdır.
Bu, dinamik veri yapıları için kullanışlıdır: JSON gibi anahtar-değer verilerini bir sınıf gibi erişilebilir yapar. val özellikler Map ile, var özellikler MutableMap ile delege edilir. var için map[name] = value ataması çalışır.
by map örneği
Bir User sınıfı mapOf("name" to "Ayşe", "age" to 30) ile oluşturulur. u.name haritadan "name" anahtarını okur ve String olarak döndürür. u.age 30 döndürür.
Tür güvenliği önemlidir: age: Int bildirimi haritadaki değerin Int olduğunu varsayar. Yanlış tür runtime hatası verir. Dinamik veriyi statik türlerle sarmak bu desenin gücüdür. MutableMap ile var özellikleri hem okunur hem yazılır.
Uygulama User sınıfını by map ile tanımla
class User(val map: Map<String, Any?>) tanımla. İçinde val name: String by map ve val age: Int by map özelliklerini ekle. main içinde User(mapOf("name" to "Ayşe", "age" to 30)) oluştur ve println(u.name) ile println(u.age) çağır.
Başlangıç kodu
// User sınıfını tanımla: map parametreli, name ve age map delegesi ile
fun main() {
// User örneği oluştur ve name, age yazdır
}Örnek çözüm
class User(val map: Map<String, Any?>) {
val name: String by map
val age: Int by map
}
fun main() {
val u = User(mapOf("name" to "Ayşe", "age" to 30))
println(u.name)
println(u.age)
}Beklenen çıktı
Ayşe 30
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 by map kavramlarını eşle
| Kavram | Anlamı |
|---|---|
by map |
Harita delegasyonu |
map[key] |
Değer okuma |
var name by map |
Değiştirilebilir |
val name by map |
Salt okunur |
2 val name by map hangi türü gerektirir?
- List
- Array
- Set
- Map Doğru cevap
Açıklama: by map bir Map gerektirir; anahtar özellik adıdır.
3 by map bildirimini tamamla
class User(val map: Map<String, Any?>) {
val name: String ____ map
}
class User(val map: Map<String, Any?>) {
val name: String by map
}
Açıklama: by map name özelliğini haritadan okur.