【Ruby】配列とハッシュの基本的な使い方

スポンサーリンク

配列とハッシュに関してです。基本の基くらいの内容ですがまとめてみます。

配列の使い方

配列を作るには要素をカンマ区切りにして[ ]で全体を囲みます。

nums = [1, 2, 3, 4, 5]
strs = ["a", "b", "c", "d"]
# 要素数が0個の配列
arr = []
  #=>[]
arr = Array.new
  #=>[]

# 要素数を指定
arr = Array.new(3)
  #=>[nil, nil, nil]

# 要素数を指定して値を格納
arr = Array.new(3, "test")
  #=>["test", "test", "test"]

# 要素のインデックスを引数としブロックを実行
arr = Array.new(3){ | index | "hoge#{index}" }
  #=>["hoge0", "hoge1", "hoge2"]
arr = Array.new(3){ "fuga" }
  #=>["fuga", "fuga", "fuga"]

配列のオブジェクトを参照するには 配列名[インデックス] を使います。インデックスは0からです。

# 取り出す
strs = ["a", "b", "c", "d"]
p strs[2]
  #=>"c"

# 格納する
nums = [1, 2, 3, 4, 5]
nums[3] = 9
p nums[3]
  #=>9

配列の要素数を取得するには .size または .length メソッド を使用します。配列数が5の場合、インデックスは 0〜4 です。

nums.size
  #=>5

nums.length
  #=>5

配列には違う種類のオブジェクトを格納する事もできます。

nums[3] = "test"
p nums
  #=>[1, 2, 3, "test", 5]

参考:class Array | Ruby 2.1.0 リファレンスマニュアル

ハッシュの使い方

ハッシュ(Hash)またの名を 連想配列 についてです。キーとオブジェクトを定義するために「=>」を使い、カンマ区切りにして「 { } 」で全体を囲みます。キーには数値だけでなく文字列も指定できます。取り出し方は配列と同じように ハッシュ名[キー] を使います。

fruits = {1 => "apple", 2 => "orange", "three" => "grape"}
p fruits[2]
  #=>"orange"
p fruits["three"]
  #=>"grape"

キーにはシンボルを使う事もできます。シンボルというのは、文字列に似たオブジェクトで、先頭に「 : 」をつけます。ハッシュのキーのように単純に「同じかどうか」を比較するような場合は、文字列よりも効率がよいです。詳細は長くなるので避けますが、文字列の場合はその都度オブジェクトを生成するがシンボルは最初に生成したらそのオブジェクトをずっと参照するからだそうです。

また、シンボルの場合は以下のように「=>」を使わない書き方もできるのでシンプルに書けます。ただし「 : 」が前後逆になってますので気を付けましょう。

fruits = {:apple => "アップル", :orange => "オレンジ", :grape => "グレープ"}
p fruits[:grape]
  #=>"グレープ"

fruits = {apple: "アップル", orange: "オレンジ", grape: "グレープ"}
p fruits[:apple]
  #=>"アップル" 

シンボルに to_s メソッドを使えば文字列に、文字列に to_sym メソッドを使えばシンボルに、それぞれ互いに変換できます。また、シンボルに数値は指定できません。

"apple".to_sym
  #=> :apple

:apple.to_s
  #=> "apple"

ハッシュの要素数の取得にも .size または .length メソッド を使用します。

fruits.size
  #=> 3

fruits.length
  #=> 3

参考:class Hash | Ruby 2.1.0 リファレンスマニュアル

参考書籍

初学者におすすめです。

たのしいRuby 第4版
たのしいRuby 第4版
posted with amazlet at 15.05.22
高橋 征義 後藤 裕蔵
ソフトバンククリエイティブ
売り上げランキング: 6,842

たのしいRubyを読んだあとに。コンパクトで要点よくまとめられてます。

初めてのRuby
初めてのRuby
posted with amazlet at 15.05.22
Yugui
オライリージャパン
売り上げランキング: 16,113