Android Kotlin条件制御


前言
kotlin条件制御構文は簡単で、java条件制御よりも多くの利点は、より少ないコードでより多くの機能を実現することです.
if式
kotlinではif式の結果を変数に割り当てることができます
val max = if (a > b) {
    print("Choose a")
    a
} else {
    print("Choose b")
    b
}

Javaのように3元オペレータを持つ必要はありません.簡単に実現できるからです.
val c = if (condition) a else b

使用区間
in演算子を使用して、指定した区間内に数値があるかどうかを検出します.区間フォーマットはxです.y:インスタンス
fun main(args: Array) {
    val x = 5
    val y = 9
    if (x in 1..8) {
        println("x     ")
    }
}

出力結果:
x     

When式
whenはそのパラメータをすべての分岐条件と順番に比較し,ある分岐が条件を満たすまで比較した.
whenは式としても文としても使用できます.式として使用される場合、条件を満たすブランチの値は式全体の値であり、文として使用される場合、個別のブランチの値は無視されます.whenは他の言語のswitchオペレータに似ています.最も簡単な形式は次のとおりです.
when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { //      
        print("x    1 ,    2")
    }
}

whenではelseはswitchのdefaultと同じです.他のブランチが条件を満たさない場合、elseブランチが評価されます.複数のブランチを同じ方法で処理する必要がある場合は、複数のブランチ条件をカンマで区切ることができます.
when (x) {
    0, 1 -> print("x == 0 or x == 1")
    else -> print("otherwise")
}

また、(in)または(!in)の区間または集合に値を検出することもできます.
when (x) {
    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")
    else -> print("none of the above")
}

もう1つの可能性は、値が(is)または(!is)ではない特定のタイプの値を検出することです.注意:スマート変換のため、追加の検出を必要とせずに、このタイプのメソッドと属性にアクセスできます.
fun hasPrefix(x: Any) = when(x) {
    is String -> x.startsWith("prefix")
    else -> false
}

whenはif−else if鎖の代わりに用いることもできる.パラメータが指定されていない場合、すべてのブランチ条件は単純なブール式であり、ブランチの条件が真の場合、ブランチは実行されます.
when {
    x.isOdd() -> print("x is odd")
    x.isEven() -> print("x is even")
    else -> print("x is funny")
}

≪インスタンス|Instance|emdw≫
fun main(args: Array) {
    var x = 0
    when (x) {
        0, 1 -> println("x == 0 or x == 1")
        else -> println("otherwise")
    }

    when (x) {
        1 -> println("x == 1")
        2 -> println("x == 2")
        else -> { //      
            println("x    1 ,    2")
        }
    }

    when (x) {
        in 0..10 -> println("x        ")
        else -> println("x         ")
    }
}

出力結果:
x == 0 or x == 1
x    1 ,    2

xこの区間範囲whenでin演算子を使用して、セット内にインスタンスが含まれているかどうかを判断します.
fun main(args: Array<String>) {
    val items = setOf("apple", "banana", "kiwi")
    when {
        "orange" in items -> println("juicy")
        "apple" in items -> println("apple is fine too")
    }
}

出力結果:
apple is fine too

まとめ:
kotlinではループ制御構文はjavaでの構文に対して書き方の簡略化を行い,より少ないコードでより機能的に実現した.if(式)は変数var xxに値を割り当てることができ、式は範囲in構文のような小さな変更を使用してコードを簡略化することができる.whenサイクル制御を新たに追加し、公式紹介はswitchに等しいが、switchの拡張にも属する.範囲in操作、表現式、lambda式をサポートする.