Rubyがミニツク

あなたのRubyの技術に関するより詳しい知識と理解を増やします。

Ruby入門コース

このコースについて

Rubyのeラーニング研修システムはRailsを使ってWebアプリケーション開発ができる技術者の育成を目指します。 そのため、Railsを扱うことができるだけのRubyの知識を得ることがRuby入門コースの目標となっています。

コンテンツ一覧

ヒント レッスンの名前をクリックすると、その内容を表示します。

次のコンテンツ ホームへ戻る

インデックスの指定

配列オブジェクトの要素に対応付けられているインデックスを指定しています。インデックスは0から始まる数字です。配列オブジェクトの要素を取り出す時は、[]メソッドの引数にインデックスを指定するとできます。そのインデックスの指定するやり方は幾つかあります。

  • ary[n]
  • ary[n..m] または ary[n…m]
  • ary[n, len]


ary = [1, 2, 3]
p ary[0]        #=> 1
ary[0] = 10
p ary[0]        #=> 10

インデックスの負の符号を付けて指定すると、配列オブジェクトは逆から要素を取り出します。指定した位置の要素を参照・代入できます。

ary = [1, 2, 3]
p ary[-1]       #=> 3
ary[-1] = 10
p ary[-1]       #=> 10

配列オブジェクトの要素数よりも大きい数をインデックスに指定して参照します。すると配列オブジェクトはnilを返します。インデックスに負の符号を付けて指定しても同じようにnilを返します。

ary = [1, 2, 3]
p ary[5]       #=> nil
p ary[-5]      #=> nil

配列オブジェクトの要素数よりも大きい数をインデックスに指定して代入します。もし既に格納している要素とインデックスで指定した位置のあいだに何も要素がない時は、そのあいだにnilを挟みます。

ary = [1, 2, 3]
ary[7] = 10
p ary        #=> [1, 2, 3, nil, nil, nil, nil, 10]

[]メソッドと[]=メソッドは部分配列に対する操作もおこなうことができます。配列オブジェクトのインデックスに範囲を指定すると、その指定した範囲の要素を操作できます。

ary = [1, 2, 3, 4, 5]
p ary[0..2]        #=> [1, 2, 3]
ary[0..2] = [10, 10, 10]
p ary              #=> [10, 10, 10, 4, 5]

範囲よりも多い要素を代入しようとすると、その範囲の後ろに新しい配列オブジェクトの要素を増やします。

ary = [1, 2, 3]
ary[0..1] = [10, 10, 10]
p ary        #=> [10, 10, 10, 3]

指定した範囲が配列オブジェクトの要素数を越えた場合には、その配列オブジェクトの最後の要素までを参照します。

ary = [1, 2, 3, 4, 5]
p ary[0..100]       #=> [1, 2, 3, 4, 5]

指定した範囲が配列オブジェクトの要素数を越えた場合には、その配列オブジェクトの要素までのあいだにnilが入ります。

ary = [1, 2, 3]
ary[5..8] = [10, 10, 10]
p ary        #=> [1, 2, 3, nil, nil, 10, 10, 10]

配列オブジェクトに操作する範囲の始まりのインデックスを第1引数に指定し、第2引数に範囲の終わりまでの要素数を指定すると、その範囲の要素を参照します。同じように範囲を指定して要素を代入できます。

ary = [1, 2, 3, 4, 5]
p ary[1, 3]     #=> [2, 3, 4]
ary[1, 3] = [10, 10, 10]
p ary           #=> [1, 10, 10, 10, 5]

範囲よりも多い要素を代入しようとすると、その範囲の後ろに新しい配列オブジェクトの要素を増やします。

ary = [1, 2, 3]
ary[0, 2] = [10, 10, 10]
p ary         #=> [10, 10, 10, 3]

配列オブジェクトの要素数を越える範囲を指定して参照した場合には、その配列オブジェクトの最後の要素までを参照します。

ary = [1, 2, 3]
p ary[0, 100]        #=> [1, 2, 3]

配列オブジェクトの要素数を越える範囲を指定して代入した場合には、その配列オブジェクトの要素までのあいだにnilが入ります。

ary = [1, 2, 3]
ary[5, 7] = [10, 10, 10]
p ary         #=> [1, 2, 3, nil, nil, 10, 10, 10]

置き換える要素の数を「0」にすることで、指定した開始位置へ代入した要素を挿入します。

ary = [1, 2, 3, 4, 5]
ary[5, 0] = [10]
p ary        #=> [1, 2, 3, 4, 5, 10]


次のコンテンツ ホームへ戻る