【Ruby】配列とハッシュ

配列は角括弧でオブジェクトのリストを囲って定義することができます。
配列の要素はインデックスを角括弧の中に指定して取得することができます。最初の要素のインデックスは0ですが、インデックスに負の整数を指定した場合は配列の最後から数えた位置にあるオブジェクトが返ります。

# 配列を作る
ary = [1, "two", 3, "four", 5]
# 配列のサイズ
puts "ary.length=#{ary.length}"
# インデックスを指定して要素を参照
puts "ary[1]=#{ary[1]}"
puts "ary[-1]=#{ary[-1]}"

配列はArrayクラスのオブジェクトです。サイズはlengthメソッドで得ることができます。

上記プログラムの実行結果は以下のようになります。

ary.length=5
ary[1]=two
ary[-1]=5

配列からその配列の一部を生成することができます。
配列のオブジェクト名の後の角括弧内にカンマ区切りで数値を2つ指定すると、1つ目の数値の位置から始まり、2つ目の数値の個数を持つ新しい配列を返します。
配列のオブジェクト名の後の角括弧内に開始位置と終了位置の数値を指定すると、その範囲の新しい配列を返します。範囲は2つまたは3つピリオドで区切ります。2つの場合は終了位置を含み、3つの場合は終了位置を含みません。

# 配列を作る
ary = [1, "two", 3, "four", 5]
# 範囲を指定して新しい配列を得る
puts "ary[1, 3]", ary[1, 3]
puts "ary[1..3]", ary[1..3]
puts "ary[1...3]", ary[1...3]

上記プログラムの実行結果は以下のようになります。

ary[1, 3]
two
3
four
ary[1..3]
two
3
four
ary[1...3]
two
3

配列に要素を代入するには[index]=を使用します。配列の最大インデックスより大きいインデックスを指定すると、指定した位置に要素が代入され、隙間にはnilが入ります。

# 配列を作る
ary = [1, "two", 3, "four", 5]
# 配列に要素を追加
ary[6] = 7
ary.each do |x|
  print x, " "
end

上記プログラムの実行結果は以下のようになります。

1 two 3 four 5 nil 7 

ハッシュは中括弧で「キー=>値」という形式の要素のリストを囲って定義することができます。キーおよび値には任意のオブジェクトを使用することができます。角括弧でキーを囲って値を取得することができます。

# ハッシュを作る
hash = {'Japan' => 'Tokyo', 'USA' => 'Washington,D.C.', 'China' => 'Beijin'}
# ハッシュのサイズ
puts "hash.length=#{hash.length}"
# キーを指定して値を参照
puts "hash['USA']=#{hash['USA']}"

ハッシュはHashクラスのオブジェクトです。サイズはlengthメソッドで得ることができます。

上記プログラムの実行結果は以下のようになります。

hash.length=3
hash['USA']=Washington,D.C. 

角括弧でキーを囲って代入することで値の更新、新しい要素の追加ができます。

# ハッシュにキーと値のペアを追加
hash['France'] = 'Paris'
hash.each do |key, val|
  puts "#{key}=>#{val}"
end

上記プログラムの実行結果は以下のようになります。

USA=>Washington,D.C.
France=>Paris
China=>Beijin
Japan=>Tokyo