こんにちは😀
今回は、範囲をみていきます。
範囲は、例えば以前使用した「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」を使用しましょう。
他は想定通り出力されています。
使い慣れていないので戸惑うところですが、使えると便利そうなので
範囲の使い方にも慣れていきたいと思います。
今回はここまで🤚
では、また次回。