うきっとラボ~中卒から始めるプログラミング~

中卒のポンコツ太郎が立派なプログラマになるまでの道のり

【Kotlin】~ちょこっとメモ~「.indices」

調べたきっかけ

ListOf()で作成した2つのリストの各要素を、別のMapのキーと値として格納する処理を書いていたところ、
for文の条件式で書いていた、

//条件式:0~リストのサイズ(含まない)分繰り返す
for(i in 0 until nameList.size){  }

のところでAndroidStudioがヒントをくれた。
f:id:ukiuki0518:20191119110148p:plain

どうやら「この部分は”.indices”で置き換えられますよ~」とのことらしい。

ってことでちょっと調べてみた


「.indices」は範囲を返す

詳しく書くと
コレクションのインデックス範囲を表す”IntRange”オブジェクトを返す」ということらしい。

・IntRangeオブジェクトにはInt値の範囲を格納できる型

//0~10までの範囲を格納できる
val ran: IntRange = 1..10

//for文などの条件式として使用できる
for(i in ran){    }

ってことで書き換えてみた

for(i in nameList.indices){    }

f:id:ukiuki0518:20191119113119p:plain
きれいになった
こりゃ便利!コレクションではこれを使っていこうと思う。


ちなみに

ちなみに条件式に、リストのサイズをそのまま

for(i in 0..nameList.size)

とすると、”インデックス”ではなく”素数”を取得してしまうので
リストへのアクセス中にArrayIndexOutOfBoundsExceptionが発生する。