when ile enum
- Kotlin kursu
- Başlangıç
- Ders 97/116
- 5 dk
when ile enum üzerinde dallanmayı öğrenirsin.
when ile enum: tükenen dallar
when bir enum'un tüm sabitlerini sıralarsan else koymadan güvenle kullanılır. Yeni bir sabit eklersen derleyici yeni dalı ister; bu yüzden hata erken yakalanır.
fun describe(c: Color) = when (c) {
Color.RED -> "kırmızı"
Color.GREEN -> "yeşil"
Color.BLUE -> "mavi"
}Buna tükenen when denir; çünkü tüm sabitler tek tek yazılır. Eğer bir sabiti unutursan derleyici uyarı verir. Böylece yeni sabit eklemek güvenli olur; her dal gözden geçirilir.
Tükenme ve yeni sabit
Tükenen bir when'e yeni bir sabit eklersen derleyici seni uyarır. Bu, sabit eklemenın güvenli olduğu anlamına gelir.
enum class Color { RED, GREEN, BLUE }
// YELLOW eklersen describe fonksiyonu derlenmez
// tüm sabitleri içeren yeni bir dal gerekirUyarıyı görünce yeni dalı yazarsın; hiçbir sabit gözden kaçmaz. Bu, kodun ileride bozulmasını önler. else koymak yerine tüm sabitleri açıkça yazmak daha güvenlidir.
Uygulama Yönleri açıkla
Direction adında bir enum class tanımla: NORTH, SOUTH, EAST, WEST. fun describe(d: Direction): String yaz; when ile her yöne bir Türkçe kelime ver. main içinde describe(Direction.NORTH) çıktısını yazdır.
Başlangıç kodu
fun main() {
// Bir yön türü tanımla; describe ile bir yönün adını yazdır
}Örnek çözüm
enum class Direction { NORTH, SOUTH, EAST, WEST }
fun describe(d: Direction) = when (d) {
Direction.NORTH -> "kuzey"
Direction.SOUTH -> "güney"
Direction.EAST -> "doğu"
Direction.WEST -> "batı"
}
fun main() {
println(describe(Direction.NORTH))
}Beklenen çıktı
kuzey
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 when bir enum'un tüm sabitlerini listeliyorsa ne gerekmez?
- else dalı gerekmez Doğru cevap
- Döngü gerektirir
- Sadece bir dalı işler
- Sabitleri değiştirir
Açıklama: Tüm sabitler yazılırsa else gerekmez; derleyici yazar.
2 Boşluğu doldur: when dalı ekle
when (c) {
Color.RED -> "kırmızı"
____ -> "yeşil"
}
when (c) {
Color.RED -> "kırmızı"
Color.GREEN -> "yeşil"
}
Açıklama: Color.GREEN sabiti için dal ekledin.
3 Sabit ve karşılık eşleştir
| Kavram | Anlamı |
|---|---|
Color.RED |
kırmızı |
Color.GREEN |
yeşil |
Color.BLUE |
mavi |