Tüm Durumları Kapsayan when
Tüm durumları ele alın
Tüm Durumları Kapsayan when, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 4. 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.
Tüm Durumları Kapsama
Tüm durumları kapsayan bir when, olası her değeri ele alır. İfade olarak kullanıldığında Kotlin bunu, her zaman bir sonuç üretilmesini sağlamak için zorunlu tutar.
Bu derste when ifadesinin tüm durumları kapsamasının nasıl sağlanacağı ve bunun neden yararlı olduğu gösterilir.
Aksi dalı tüm durumları kapsar
Int gibi açık uçlu konular için bir else dalı, listelenmeyen her şeyi kapsar.
Bu, when ifadesinin her zaman eşleşmesini garanti eder.
fun label(n: Int): String = when (n) {
0 -> "zero"
1 -> "one"
else -> "many"
}
fun main() {
println(label(0))
println(label(5))
}Numaralandırmalar tüm durumları kapsar
Bir numaralandırmayla derleyici olası her değeri bilir. Tümünü listelerseniz else dalını atlayabilirsiniz.
enum class Direction { NORTH, SOUTH, EAST, WEST }
fun turn(d: Direction): String = when (d) {
Direction.NORTH -> "up"
Direction.SOUTH -> "down"
Direction.EAST -> "right"
Direction.WEST -> "left"
}
fun main() {
println(turn(Direction.EAST))
}Numaralandırma durumu eksik olduğunda
İfade olarak kullanılan bir when içinde bir numaralandırma değerini unutursanız derleyici bir hata bildirir.
Bu, yeni bir numaralandırma sabiti eklediğiniz anda hataları yakalar.
enum class Status { ACTIVE, PAUSED, STOPPED }
fun describe(s: Status): String = when (s) {
Status.ACTIVE -> "running"
Status.PAUSED -> "paused"
Status.STOPPED -> "stopped"
}
fun main() {
println(describe(Status.PAUSED))
}Mühürlü sınıflar
Mühürlü sınıf, derleme zamanında bilinen sabit bir alt sınıf kümesine sahiptir.
Bu, when ifadesinin else olmadan tüm alt türleri kapsamasını sağlar.
sealed class Shape
class Circle(val r: Double) : Shape()
class Square(val s: Double) : Shape()
fun area(shape: Shape): Double = when (shape) {
is Circle -> 3.14159 * shape.r * shape.r
is Square -> shape.s * shape.s
}
fun main() {
println(area(Square(4.0)))
}Tüm durumları kapsamak neden yararlıdır
Tüm durumları kapsayan when, eksik durumları sessiz hatalar yerine derleme hatalarına dönüştürür.
Yeni bir alt sınıf veya numaralandırma değeri eklediğinizde derleyici, güncellemeniz gereken her when ifadesini gösterir.
Deyimlerde zorunlu değildir
Deyim olarak kullanıldığında (bir değişkene atanmadığında) when ifadesinin tüm durumları kapsaması gerekmez.
Ancak numaralandırmalar ve mühürlü türler için yine de tüm durumları kapsamak iyi bir uygulamadır.
enum class Light { RED, GREEN }
fun main() {
val light = Light.RED
when (light) {
Light.RED -> println("stop")
Light.GREEN -> println("go")
}
}Mühürlü yapıları verilerle birleştirme
Mühürlü hiyerarşilerde genellikle veri sınıfı alt sınıfları kullanılır. Böylece tüm durumları kapsayan eşleştirmenin yanı sıra özelliklere erişmek için akıllı tür dönüşümlerinden de yararlanabilirsiniz.
sealed class Result
data class Ok(val value: Int) : Result()
data class Err(val message: String) : Result()
fun show(r: Result): String = when (r) {
is Ok -> "ok: " + r.value
is Err -> "error: " + r.message
}
fun main() {
println(show(Ok(42)))
println(show(Err("boom")))
}Güvenlik ağı olarak else
Mühürlü veya numaralandırma türündeki bir when ifadesine yine de else ekleyebilirsiniz; ancak bu durumda derleyici yeni durumlar hakkında uyarı vermeyi bırakır.
else dalını atlamak derleme zamanı güvenliğini korur; bu nedenle kapalı türlerde bunu tercih edin.
enum class Coin { HEADS, TAILS }
fun flip(c: Coin): Int = when (c) {
Coin.HEADS -> 1
Coin.TAILS -> 0
}
fun main() {
println(flip(Coin.HEADS))
}Mantıksal ve kapalı değer kümeleri
Bir Boolean yalnızca iki değere sahiptir; bu nedenle ikisini de listelemek, else olmadan when ifadesinin tüm durumları kapsamasını sağlar.
fun yesNo(flag: Boolean): String = when (flag) {
true -> "yes"
false -> "no"
}
fun main() {
println(yesNo(true))
println(yesNo(false))
}Bir araya getirme
Tüm durumları kapsayan when, bütün durumların ele alındığı anlamına gelir:
else,Intgibi açık uçlu konuları kapsar- Numaralandırmalar, mühürlü sınıflar ve
Boolean,elseolmadan tüm durumları kapsayabilir - Yeni durumlar eklediğinizde derleyici eksik durumları bildirir
sealed class Event
object Start : Event()
object Stop : Event()
fun handle(e: Event): String = when (e) {
is Start -> "starting"
is Stop -> "stopping"
}
fun main() {
println(handle(Start))
println(handle(Stop))
}Kısa sınama
Tüm durumları kapsayan when konusundaki anlayışınızı sınayın.
Özet
when ifadesinin tüm durumları kapsamasını nasıl sağlayacağınızı öğrendiniz:
else, açık uçlu konuları ele alır- Numaralandırmalar, mühürlü sınıflar ve
Booleantamamen kapsanabilir - Derleme zamanı denetimleri eksik durumları yakalar
When İfadeleri ve Akıllı Tür Dönüşümleri kursu tamamlandı.
Sıkça Sorulan Sorular
“Tüm Durumları Kapsayan when” dersi ücretsiz mi?
Evet — “Tüm Durumları Kapsayan when” 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.
“Tüm Durumları Kapsayan when” dersinde ne öğreneceğim?
Tüm durumları ele alın 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 4. dersidir.
“Tüm Durumları Kapsayan when” 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.
Bu kursun tüm dersleri
- İfade Olarak when
- Akıllı Dönüşümler
- is ve as İşleçleri
- Tüm Durumları Kapsayan when