【Kotlin入門】範囲の応用〜IntRange型とIntProgression型

Kotlin
スポンサーリンク

こんにちは😀

今回は、範囲をみていきます。
範囲は、例えば以前使用した「1..10」と書いて1〜10を示すような
形式のことです。
その範囲の応用をみてみます。

いくつか書いてみます。

fun main(args: Array<String>) {

println(“処理開始ーーーー”)

println(1..6 step 2)            // ①
println(9..3)             // ②
println(9 downTo 3)            // ③
println(2 until 6)             // ④

println(“ーーーー処理終了”)
}

①は「1〜6」までの数字を1つづつ飛ばすことを意味します。
②は「9〜3」の数字の降順を意味します。
③は②と同様「9〜3」の降順です。
④は「2〜5」までになり、終端は含みません。

実行します。
・・・ちょっと思ってたのと違いますね💦
高度な範囲

ちょっと整理します。

「1..10」のようなデータ型は「IntRange」になりますが、
「step」「downTo」「until」が付いた場合のデータ型は
「IntProgression」になります。
「step」「downTo」「until」は関数になります。
「1..5 step 2」という書き方も、「(1..5).step(2)」の簡略形に
なります。「IntProgression」はこれらの戻り値の型になります。

なので、「IntProgression」を引き数にして処理する
関数を追加します。
以下の処理は、受け取った関数の値をリストに追加しています。

fun showProgression(ip:IntProgression):String {

var numList = mutableListOf<Int>()

for (i in ip) {

numList.add(i)
}

return numList.toString()
}

main関数は、showProgression関数を呼び出す形にします。
なお、「IntRange」は「IntProgression」に含まれるので、
同じくshowProgression関数を使用できます。

println(showProgression(1..6 step 2))
println(showProgression(9..3))
println(showProgression(9 downTo 3))
println(showProgression(2 until 6))

実行しましょう。
「9..3」は出力がされていないので使用できないようです。
代わりに「downTo」を使用しましょう。
他は想定通り出力されています。
高度な範囲2
使い慣れていないので戸惑うところですが、使えると便利そうなので
範囲の使い方にも慣れていきたいと思います。

今回はここまで🤚

では、また次回。

 

【Kotlin入門一覧はこちら】

コメント

タイトルとURLをコピーしました