Vol.6 ~Hashクラス~
○ Hash クラス
オブジェクトの並び順を保持しないコレクションクラス。
インデックスの代わりに、何らかのオブジェクトを使用する。
● ハッシュの生成
シンタックスシュガー
>> hash = {:red => 'eagle'
>> :bule => 'shark',
>> :yellow => 'panther'}
「=>」 より前の部分を「キー」、「=>」 より後ろの部分を「バリュー」と呼び、一組のペアにする。
ぺアを複数記述する場合は「,(カンマ)」で区切る。
new による記述
>> hash = Hash.new
=> {}
>> hash[:red] = 'eagle'
=> ”eagle”
>> hash[:blue] = 'shark'
=> "shark"
>> hash[:yellow] = 'panther'
=> "panther"
● バリューへのアクセス
バリューへのアクセスはキーを指定する。
>> hash[:red]
=> "eagle"
● キーとバリューの検索
特定のペアを検索するには、メソッド「select」を使用する。
>> hash.select {|k, v| v == 'eagle'}
=>
● 引数としてのハッシュ
メソッドの引数としてハッシュを渡す場合、記述や読み取りに注意と慣れが必要。
一番基本的な書き方
メソッドの引数は「()」を前後に付け、ハッシュは「{}」を前後に付ける。
my_method("hero",{:red => 'eagle'
:bule => 'shark',
:yellow => 'panther'})
最後の引数がハッシュの場合は「{}」を省略可能。
メソッドの「()」も省略可能。
my_method "hero", :red => 'eagle'
:bule => 'shark',
:yellow => 'panther'
第一引数がハッシュの場合に「{}」のみをつけると、意味が異なる。
ブロック引数とみなされ、ハッシュを引数に渡していることにならない。
my_method {:red => 'eagle'
:bule => 'shark',
:yellow => 'panther'}
● ハッシュから配列への変換
ハッシュから配列に変換するには、メソッド「to_a」を使用する。
>> hash.to_a
=>
● 「map」 or 「collect」 ?
メソッド「map」、メソッド「collect」共に、各要素に対してブロック何の処理を行う。
「名前が違うだけ」で、好みのもの。
>> [1, 2, 3].map{|i| i * 2}
=> [2, 4, 6]
>> [1, 2, 3].collect{|i| i * 2}
=> [2, 4, 6]