if
基本的な使い方
Kotlinでは、ifは式として機能しています。
つまり、ifが値を返して、その値をそのまま変数に代入したりできるということです。
もちろん、通常の条件分岐としても利用できます。
fun main(args: Array) {
// 通常の使い方
val num = 10
if ((num % 2) == 0) {
println("偶数です")
} else {
println("奇数です")
}
// 式としての使い方
val num2 = 5
val str = if ((num2 % 2) == 0) "偶数です" else "奇数です"
println(str)
}
偶数です
奇数です
リターンされる値
ifでリターンされる値は、実行されたブロックの一番最後の式の値になります。
fun main(args: Array) {
testIf(-100)
testIf(50)
testIf(1)
}
fun testIf(num: Int) {
val ifReturn = if (num < 0) {
println("Run (num < 0) block.")
num * 2
} else if ((num % 2) == 0) {
println("Run ((num % 2) == 0) block.")
"偶数です"
} else {
println("Run else block.")
1234.5678
}
println("if expression return is ${ifReturn}.")
}
Run (num < 0) block.
if expression return is -200.
Run ((num % 2) == 0) block.
if expression return is 偶数です.
Run else block.
if expression return is 1234.5678.
when
基本的な使い方
whenはJavaやC言語でいうとswitchのようなものです。
ifと同じように式として機能し、値を返すことができます。
switchのdefaultに相当するものが、whenにもelseという形であります。
fun main(args: Array) {
val num = 4
// 通常の条件分岐として利用
when (num) {
1 -> println("num is 1.")
2 -> println("num is 2")
3 -> println("num is 3.")
4 -> {
// 処理をブロックで記述することも、もちろん可能です。
println("num is 4.")
}
else -> {
println("num is something else.")
}
}
// 値を返す式として利用
val ret = when (num) {
1 -> {
println("num is 1.")
123
}
2 -> {
println("num is 2.")
"456"
}
3 -> {
println("num is 3.")
123.456
}
else -> {
println("num is something else")
null
}
}
println("ret is ${ret}.")
}
num is 4.
num is something else
ret is null.
さまざまな条件設定
whenでは、かなり柔軟な分岐の条件設定ができます。
例えば、カンマで区切って複数の条件を並べたり、定数ではなく式を条件にすることもできます。
fun main(args: Array) {
val str = "100"
val num = 100.0
str.isEmpty()
when (str) {
"cat", "dog", "bird" -> println("animal")
num.toString() -> println("100.0")
is String -> println("String")
else -> println("else.")
}
}
String