Kotlin Dersleri – When Koşul Yapısı

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

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

6 Yorum

  • İ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….

  • 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

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?