when ile Enum'lar
Tüm durumları kapsayacak şekilde ele alma
when ile Enum'lar, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Numaralandırmalar Koşul Seçimiyle İyi Uyum Sağlar
when ifadesi, bir numaralandırma üzerinde dallanmanın doğal yoludur. Her sabit kendi dalına sahip olur.
enum class Light { RED, YELLOW, GREEN }
fun action(l: Light) = when (l) {
Light.RED -> "Stop"
Light.YELLOW -> "Slow"
Light.GREEN -> "Go"
}
fun main() {
println(action(Light.GREEN))
}Tüm Durumları Kapsama
when bir numaralandırma üzerinde ifade olarak kullanıldığında ve tüm sabitleri kapsadığında else dalına gerek kalmaz. Derleyici bütünlüğü doğrular.
enum class Coin { HEADS, TAILS }
fun flip(c: Coin) = when (c) {
Coin.HEADS -> "Win"
Coin.TAILS -> "Lose"
}
fun main() {
println(flip(Coin.HEADS))
}Derleyici Sizi Korur
Daha sonra yeni bir sabit eklerseniz ancak bir dal eklemeyi unutursanız derleyici bir hata bildirir. Bu, numaralandırmaların ve when ifadelerinin güvenli biçimde geliştirilebilmesini sağlar.
enum class Size { S, M, L }
fun label(s: Size) = when (s) {
Size.S -> "Small"
Size.M -> "Medium"
Size.L -> "Large"
}
fun main() {
println(label(Size.M))
}Sabitleri İçeri Aktarma
Numaralandırma üyelerini içeri aktararak when içinde tür ön ekini kaldırabilir ve dalları kısaltabilirsiniz.
enum class Dir { UP, DOWN }
import Dir.UP
import Dir.DOWN
fun move(d: Dir) = when (d) {
UP -> "y + 1"
DOWN -> "y - 1"
}
fun main() {
println(move(Dir.UP))
}Dalları Gruplama
Birden çok sabiti virgüllerle listeleyerek aynı dalı paylaşmalarını sağlayabilirsiniz.
enum class Day { MON, TUE, WED, SAT, SUN }
fun kind(d: Day) = when (d) {
Day.SAT, Day.SUN -> "Weekend"
else -> "Weekday"
}
fun main() {
println(kind(Day.SAT))
}Farklı Türler Döndürme
Her dal bir değer üretebilir; böylece bütün when ifadesi bu değere dönüşür.
enum class Tier { FREE, PRO }
fun limit(t: Tier): Int = when (t) {
Tier.FREE -> 10
Tier.PRO -> 1000
}
fun main() {
println(limit(Tier.PRO))
}Bağımsız Değişkensiz when
Koşullara göre de dallanabilirsiniz; ancak numaralandırmalar için özne biçimi daha temizdir ve tüm durumları kapsama denetimini etkinleştirir.
enum class Mood { HAPPY, SAD }
fun emoji(m: Mood) = when (m) {
Mood.HAPPY -> ":)"
Mood.SAD -> ":("
}
fun main() {
println(emoji(Mood.HAPPY))
}Dallardaki Yan Etkiler
Dallar yalnızca değer döndürmek yerine ifadeleri çalıştırabilir.
enum class Cmd { START, STOP }
fun run(c: Cmd) {
when (c) {
Cmd.START -> println("Starting...")
Cmd.STOP -> println("Stopping...")
}
}
fun main() {
run(Cmd.START)
}Mümkün Olduğunda else Kullanmayın
else kullanmak tüm durumları kapsama denetimini etkisizleştirir: yeni bir sabit sessizce else dalına düşer. Numaralandırmalar için açık dalları tercih edin.
enum class State { ON, OFF }
fun text(s: State) = when (s) {
State.ON -> "on"
State.OFF -> "off"
}
fun main() {
println(text(State.OFF))
}Gerçekçi Bir Yönlendirici
Kullanıcı rollerini izinlere yönlendirmek, tüm durumları kapsayan when kullanımı için temiz bir örnektir.
enum class Role { ADMIN, USER, GUEST }
fun canDelete(r: Role) = when (r) {
Role.ADMIN -> true
Role.USER -> false
Role.GUEST -> false
}
fun main() {
println(canDelete(Role.ADMIN))
}Özelliklerle Birleştirme
Bir numaralandırmaya göre dallanabilir ve dalların içinde onun özelliklerini de kullanabilirsiniz.
enum class Coin(val cents: Int) { PENNY(1), DIME(10) }
fun describe(c: Coin) = when (c) {
Coin.PENNY -> "Worth ${c.cents}"
Coin.DIME -> "Worth ${c.cents}"
}
fun main() {
println(describe(Coin.DIME))
}Kısa Kontrol
when ile numaralandırmalar konusundaki anlayışınızı sınayın.
Özet
Numaralandırmaları when ile birleştirmeyi öğrendiniz:
- Bir numaralandırma üzerindeki
when,elseolmadan tüm durumları kapsayabilir. - Derleyici tüm sabitlerin kapsanmasını zorunlu kılar.
- Sabitleri virgüllerle gruplayın; her dal bir değer üretir.
- Tüm durumları kapsama güvenliğini korumak için
elsekullanmaktan kaçının.
enum class Light { RED, GREEN }
fun go(l: Light) = when (l) {
Light.RED -> false
Light.GREEN -> true
}
fun main() {
println(go(Light.GREEN))
}Sıkça Sorulan Sorular
“when ile Enum'lar” dersi ücretsiz mi?
Evet — “when ile Enum'lar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“when ile Enum'lar” dersinde ne öğreneceğim?
Tüm durumları kapsayacak şekilde ele alma Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“when ile Enum'lar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.