Kotlinでのwhen式の使用
2692 ワード
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) {
val items = setOf("apple", "banana", "kiwi")
when {
"orange" in items -> println("juicy")
"apple" in items -> println("apple is fine too")
}
}
出力結果:
apple is fine too