配列とハッシュ
配列のキーは整数ですが、ハッシュは任意のオブジェクトをキーとして使えます。特定の配列またはハッシュに、異なるタイプのオブジェクトを格納することもできます。
配列リテラル-角括弧で囲まれた一連の要素
a = [ 2, ‘dog’, 7.18, 100, ‘abc’ ]
a.class → Array
a.length → 5
a[0] → 2
a[1] → “dog”
a[2] → 7.18
a[5] → nil
存在しないキーを添字にして参照すると、デフォルトでは nil が返されます。Ruby では、nil も他の値と同様にオブジェクトです。ただ、何も表さないというだけです。
負のインデックスで配列を参照すると、配列の終わりから数えた位置にあるオブジェクトが返されます。
a[-1] → “abc”
a[-2] → 100
a[-9] → nil
→ 正の インデックス |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 負の インデックス ← |
-7 | -6 | -5 | -4 | -3 | -2 | -1 | ||
a= | “ant” | “bee” | “cat” | “dog” | “elk” | “fox” | “gnu” | |
a[2] → | “cat” | |||||||
a[-3] → | “elk” | |||||||
a[1..3] → | “bee” | “cat” | “dog” | [start .. end] |
||||
a[1...3] → 半角の3つのドット |
“bee” | “cat” | 終了位置 含まない |
|||||
a[-3..-1] → | “elk” | “fox” | “gnu” | |||||
a[4..-2] → | “elk” | “fox” | ||||||
a[1, 3] → |
“bee” | “cat” | “dog” | [start, count] | ||||
a[3, 1] → |
“dog” | |||||||
a[-3, 2] → |
“elk” | “fox” |
a = [ ‘ant’, ‘bee’, ‘cat’, ‘dog’, ‘elk’, ‘fox’, ‘gnu’ ]
手っ取り早い方法:
a = %w{ ant bee cat dog elk fox gnu }
a = [ 0, 2, 4, 6, 8 ] | → | [ 0, 2, 4, 6, 8 ] |
a[1] = ‘bee’ | → | [ 0, “bee”, 4, 6, 8 ] |
a[-3] = ‘cat’ | → | [ 0, “bee”, “cat”, 6, 8 ] |
a[3] = [ 9, 7 ] | → | [ 0, “bee”, “cat”, [9, 7], 8 ] |
a[6] = 11 | → | [ 0, “bee”, “cat”, [9, 7], 8, nil, 11 ] ※代入によって、配列にすき間ができた場合、nil で自動調整 |
a = [ 1, 3, 5, 7, 9 ] | → | [ 1, 3, 5, 7, 9 ] |
a[2, 2] = ‘cat’ | → | [ 1, 3, “cat”, 9 ] |
a[2, 0] = ‘dog’ | → | [ 1, 3, “dog”, “cat”, 9 ] ※長さに 0 を指定すると、開始位置の前に挿入 |
a[1, 1] = [ 9, 8, 7 ] | → | [ 1, 9, 8, 7, “dog”, “cat”, 9 ] |
a[0..3] = [ ] | → | [”dog”, “cat”, 9 ] |
a[5..6] = 99, 98 | → | [”dog”, “cat”, 9, nil, nil, 99, 98 ] |
配列を、スタック・集合・キュー・デキュー・FIFOなどとして扱うことができます。
ハッシュリテラル-中括弧(ブレース)を使います。
city = { | |
‘nagano’ => ‘長野’, ‘ueda’ => ‘上田’, ’saku’ => ‘佐久’, ‘iida’ => ‘飯田’ |
|
} |
ハッシュ要素をアクセスするには、配列と同じように、角括弧で囲んだ添字を使います。
city[‘nagano’] → “長野”
city[’iiyama’] → nil
ハッシュには、インデックスにオブジェクトを使えるという大きな利点があります。反面、要素がソートされないので、簡単にスタックやキューとして使うことができません。
コメント