条件分岐
if
書き方はJavaと同じ
Kotlinのifは式なので結果を代入できる
val score = 70
val message = if (score >= 60) "合格" else "不合格"
println(message)
Kotlinには三項演算子がないが、if-else
が式なのでこれで代用できる
else if
をつなげることで三項演算子よりも更に多くの条件で分岐した結果を取得できる
when
- Javaのswitch文の強化版
- breakが不要
- 条件分岐部分に定数以外を指定可能
- 値を返す
when
は基本的にはelse
が必須 -
if-else
をつなげるよりはwhen
のほうが見やすくなる
when (x) {
1 -> "one"
2, 3 -> "two or three"
else -> "unknown"
}
// 定数以外の指定
when (x) {
1 -> "one"
getInt() -> "getInt(): $x"
in 1 .. 10 -> "1 <= x <= 10"
else -> x.toString()
}
ループ
while
// hello を3回出力
var count = 3
while (count-- > 0) {
println("hello")
}
// Javaとの違いはdo-while内の変数をwhileの条件として使えること
do {
val next = Math.random() < 0.5
} while (next)
for
for (要素名 in イテレータを提供するオブジェクト) {
…
}
// 例
for (x in arrayOf(1, 2, 3)) {
println(x)
}
// ラベル付き
// 普通にbreakするとyのループを抜けるだけだが、この場合はxのループも抜ける
// Swiftにもある
loop@ for (x in 1 .. 10) {
for (y in 1 .. 10) {
if (y == 5)
break@loop
}
}
イテレータを提供するオブジェクトとは?
-
iterator()
メソッド、または拡張関数を持つオブジェクトのこと - インターフェイスは以下
// 次の要素を返す
operator fun next(): T
// 次の要素があるかを返す
operator fun hasNext(): Boolean