2017-09-26 4 views
1

だが、私はこのようなハッシュの値にアクセスしたいとしましょう:Rubyでは、ハッシュを反復処理するときに#each_pairを#eachの利点は何ですか?

munsters = { 
    "Herman" => { "age" => 32, "gender" => "male" }, 
    "Lily" => { "age" => 30, "gender" => "female" }, 
    "Grandpa" => { "age" => 402, "gender" => "male" }, 
    "Eddie" => { "age" => 10, "gender" => "male" }, 
    "Marilyn" => { "age" => 23, "gender" => "female"} 
} 

私は2つのパラメータで#eachを使用することができます。

munsters.each do |key, value| 
    puts "#{name} is a #{values["age"]}-year-old #{values["gender"]}." 
end 

それとも私は2つのパラメータで#each_pairを使用することができます。

munsters.each_pair do |key, value| 
    puts "#{name} is a #{values["age"]}-year-old #{values["gender"]}." 
end 

おそらく、この2つの違いはこの単純な例では受け入れられませんが、 e #each_pair#each以上に使用する利点を理解していますか?

+1

@lurkerあなたは '#each_pair'でも同じことができます。 –

答えて

5

ハッシュはEnumerableであるため、eachメソッドが必要です。 each_pairは、キーと値のペアを含む2要素の配列がブロックに渡されることを強く示唆しているため、より明確な名前になる可能性があります。

これらは互いのエイリアスで、同じソースコードを共有します。

関連する問題