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]


自宅サーバーWebRing << 前 |ID=231 |次 >> 乱移動前後5表示サイト一覧