Kotlin - IntRange(..ドット2つ)

公開日:2019-11-06 更新日:2019-11-06
[Kotlin]

1. 概要

IntRange を使用すると、値の範囲を表すことができます。
連番の取得、数値が範囲に含まれているかどうかなどのチェックが行えます。
また、「..」を使って、「{開始値}..{終了値}」のように書くこともできます。


2. IntRange

var lst = IntRange(0, 5)
lst.forEach {
    n -> print(n)
}
//結果:012345

step() で増減数を設定します。
var lst = IntRange(1, 10).step(2)
for (n in lst) {
    print(n)
}
//結果:13579

reversed() が順序を逆にします。
var lst = IntRange(1, 9).reversed().step(2)
for (n in lst) {
    print(n)
}
//結果:97531

最大、最小、合計、要素数、平均を取得します
var lst = IntRange(5, 10)
println(lst.max())     // 最大:10
println(lst.min())     // 最小:5
println(lst.sum())     // 合計:45
println(lst.count())   // 要素数:6
println(lst.average()) // 平均:7.5

指定した数値が範囲内にあるかどうかを判定します。
var lst = IntRange(5, 10)
println(lst.contains(4))  // false
println(lst.contains(5))  // true  範囲内
println(lst.contains(10)) // true  範囲内
println(lst.contains(11)) // false


3. 「..」による書き方

IntRange() は「..」を使って書くこともできます。

println(4 in 5..10)    // false 範囲外
println(5 in 5..10)    // true  範囲内
println((5..10).max()) // 最大:10
println((5..10).javaClass.name) // kotlin.ranges.IntRange

for でも使えます。
for (i in 0..9) print(i) // 0123456789
println("")

for (i in 0..9 step 2) print(i) // 02468
println("")

// 逆順でループ
for (i in 9 downTo 0 step 2) print(i) // 97531

変数で範囲を指定することもできます。
val fromNo = 0
val toNo = 9
(fromNo..toNo).forEach{n -> print(n) } // 0123456789

char を使うこともできます。
('a'..'z').forEach{n -> print(n) } // abcdefghijklmnopqrstuvwxyz