オブジェクトへの参照を順に並べたもの。配列は個々のオブジェクトへの参照を保持している。該当する要素が存在しない添字の場合nil
を返す
arg = [1, 2, 3] p arg[3] # => nil
負の添字
負の添字は末尾から逆順に要素を指す番号と解釈される。-1
が最後の要素、-2
はその手前の要素を指す
arg = [1, 2, 3] arg[-1] # => 3 arg[arg.length - 1] と同じ arg[-2] # => 2 arg[arg.length - 2] と同じ arg[-4] # => nil 範囲外の場合はnilを返す
長さ付き添字
位置と長さを指定する参照。新しい配列オブジェクトを生成して返す。
array[n, m]
... n番号からm個数の要素を指定
範囲外を指定すると空配列が返る、一部要素がある場合は要素があるところまでが返される。
arg = [1, 2, 3, 4] arg[1, 2] # => [2, 3] arg[-2, 2] # => [3, 4] # 範囲外を指定 arg[4, 2] # => [] # 一部要素がある範囲を指定 arg[3, 2] # => [4] # -2番目から -1個の要素のような指定はできない arg[-2, -1] # => nil
範囲添字
添字として範囲オブジェクトを渡すとその範囲に含まれる要素を取得できる。開始位置または終了位置に負の添字を用いることもできる。
arg = [1, 2, 3, 4] arg[0..1] # => [1, 2] 0番目から1番目までの要素 arg[0...1] # => [1] 0番目から1番目未満までの要素 arg[-2..-1] # => [3, 4] -2番目から-1番目までの要素 arg[-2..3] # => [3, 4] -2番目から3番目までの要素 arg[-2..1] # => [] -2番目から1番目までの要素 ... 該当する要素無し arg[4..5] # => [] 4番目から5番目までの要素 ... 該当する要素無し arg[3..5] # => [4] 3番目から5番目までの要素 ... 該当する要素のみ返す
配列の範囲外を指定してもエラーにならないし、範囲で取得すればある範囲だけ返してくれるのスゴイ!!
理解しきれてない課題
a = 1 b = "str" p c = [a, b, 3, "文字列"] # => [1, "str", 3, "文字列"] p d = [a, c, [1, 2, 3]] # => [1, [1, "str", 3, "文字列"], [1, 2, 3]] a += 1 b = "hoge" p c # => [1, "str", 3, "文字列"] p d # => [1, [1, "str", 3, "文字列"], [1, 2, 3]] c[0] = 2 c[2] = "hoge" p d # => [1, [2, "str", "hoge", "文字列"], [1, 2, 3]]
配列はオブジェクトへの参照を保持してるって事だったけど、a
, b
の値を変えても配列c
, d
には影響はないのに配列c
の要素を変更すると、配列d
の要素c
が変更されるのは、a
とb
はオブジェクトではなく値の変数だからって認識で良いのですかね?

- 作者: Yugui
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/06/26
- メディア: 大型本
- 購入: 27人 クリック: 644回
- この商品を含むブログ (253件) を見る