Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Kotlin Dersleri yazı serimize bu dersimizde kotlin When Koşul Yapısı kullanımı ile devam edeceğiz.
When Koşul Yapısı
Java’daki Switch – Case yapısına çok benzeyen When birden fazla koşulu kontrol etmek için kullanılır. When koşulu ile yapacağımız herşeyi “if” – “else if” – “else” yapısı ile yapabilmekteyiz , fakat when ile kullanımı daha basit olmaktadır. Kullanımına bir örnek vererek devam edelim.
val x = 1 when (x) { 1 -> { print("x == 1") } 2 -> { print("x == 2") } else -> { // Note the block print("x 1 e ve 2 ye eşit değil") } } Konsol Çıktısı: x == 1
Yukarıda gördüğünüz gibi x değerimizi when’in yanında parantez içinde yazıyoruz when(x) ve aşağıda x’in türünden değişkenler yazıyoruz. When içine yazılan değer aşağıdaki x’in türünden değere eşit ise “->” karşısındaki kod bloğu çalışacaktır. Eğer herhangi bir değere eşit gelmeze aynı if else yapısında olduğu gibi else bloğu çalışacaktır.
Yukarıdaki örnekte “->” karşısında { } parantez içindeki kodlar çalışmaktadır. Eğer çalıştıracak olduğumuz kod tek satır ise { } içinde kullanmamıza gerek kalmamaktadır. Örneğin:
val x = 1 when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> print("x 1 e ve 2 ye eşit değil") } Konsol Çıktısı: x == 1
Örneklerimizi arttıralım:
val x = 2 when (x) { 0, 1 , 2 -> print("x == 0 veya x == 1 veya x ==2") else -> print("x 0'a, 1'e ,2'ye ve 3'e eşit değil") } Konsol Çıktısı: x == 0 veya x == 1 veya x ==2
Yukarıdaki örnekte 0,1,2 den herhangi birine eşit olması durumunda çalışacak , aksi durumda else bloğu çalışacak.
Örneklerimize devam edelim
val numbers : IntArray = intArrayOf(10, 20, 30, 40, 50) // intArrayof metodu ile IntArray'ı başlangıç değerleri ile oluşturuyoruz var x = 20 when (x) { in 1..10 -> print("x 1 ile 10 aralığında") in numbers -> print("x number array'inin içinde") !in 10..20 -> print("x 10 ile 20 aralığının dışında") else -> print("Yukarıdakilerin hiçbiri") } Konsol Çıktısı : x number array'inin içinde
Yukarıdaki Örnekte ise “in” deyimi ile verilen x değerinin aralıkta ve ya Array’in içinde olup olmadığını kontrol ettik .
When Koşul Yapısı kullanımı bazı durumlarda if koşul yapısından daha pratik olmaktadır. İlerleyen derslerimizde gerektiği durumlarda if , gerektiği durumlarda when koşul yapısı’nı kullanacağız.
Yukarıdaki örnekleri Kotlin’in resmi sayfasından aldık.
Arkadaşlar Kotlin When Koşul Yapısı dersimizin sonuna geldik. Bir sonraki dersimizde Kotlin dilinde Range Kullanımı dersimiz ile deva edeceğiz. Bir sonraki dersimizde görüşmek dileğiyle…
Konu hakkında sorularınızı konu altından ve ya SoruCevap sitemizden sorabilirsiniz.
Tüm Kotlin derslerimiz için tıklayınız.
11
İyi günler.
Örnekleri üzerinde gidiyordum ancak en sonda yer alan kod penceresindeki kodu yazdığımda hata alıyorum. Normalde Kotlin yazım esansında uyumsuz bir kod yazıldığında zaten müsaade etmiyor. Ben ise bu kodu çalıştırınca hata alıyorum….
Yazılan kod:
fun main(args:Array){
val numbers: IntArray = intArrayOf (10, 20, 30, 40, 50)
var x = 20
when (x) {in 1..10 -> println(“x değeri 1 ile 10 aralığında”)
in numbers -> println(“x belirlenen numaralar arasında”)
!in 10..20 -> println(“x 10 ile 20 sayılarının dışında”)
else -> println(“x sayısı yukardakilerden birine uymuyor…”)
}
}
Karşılaşılan hata :
(Not: aşağıda yer alan “—” sadece dosya yolu uzun olduğu için sildim, program diğer kodları çalıştırmakta…)
“C:\Program Files\Java\jdk-10.0.2\bin\java.exe” “-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.2.1\lib\idea_rt.jar=52586:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.2.1\bin” -Dfile.encoding=UTF-8 -classpath E:\—\—\—\—\—;C:\Users\—\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-stdlib.jar;C:\Users\—\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-reflect.jar;C:\Users\—\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-test.jar;C:\Users\—\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-stdlib-jdk7.jar;C:\Users\—\.IdeaIC2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-stdlib-jdk8.jar SadeceTESTKt
Exception in thread “main” java.lang.NoClassDefFoundError: kotlin/KotlinPackage
at SadeceTESTKt.main(SadeceTEST.kt:3)
Caused by: java.lang.ClassNotFoundException: kotlin.KotlinPackage
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
… 1 more
Process finished with exit code 1
Fun main de bir uyumsuzluk mu var? Yardım eder iseniz sevinirim. Teşekkürler….
Söylediğiniz örneği tekrar denedim, herhang bir sorun yok.
Kotlin ve Windows’un ortaklaşa çakışması yüzünden ortaya çıkan bir bug bu. StackOverFlow’da keşfettiğim bu bug’ı açıkladım. Kontrol edebilirsiniz. https://stackoverflow.com/a/60047331/1744705
Merhaba,
intArrayOf kullanımında hata alıyorum.
Exception in thread “main” java.lang.NoClassDefFoundError: kotlin/KotlinPackage
at KotinKt.main(kotin.kt:209)
Caused by: java.lang.ClassNotFoundException: kotlin.KotlinPackage
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
… 1 more
kullandığınız “->” ne işe yarıyor? anlamadım.
“->” neden kullanıldığını anlamadım. açıklayabilir misiniz?