2016-10-19 4 views
0

私は少しルビーを学ぼうとしています。誰かが私にこれらの2つの例の違いを説明してもらえますか?私はこれを取得Rubyでハッシュを反復する。これら2つの例の違いは?

family.each { |x| puts "#{x}" } 

family = { "Homer" => "dad", 
    "Marge" => "mom", 
    "Lisa" => "sister", 
    "Maggie" => "sister", 
    "Abe" => "grandpa", 
    "Santa's Little Helper" => "dog" 
} 

が、私はこのように繰り返す場合:

は、私はハッシュを持っていると言う

["Homer", "dad"] 
["Marge", "mom"] 
["Lisa", "sister"] 
["Maggie", "sister"] 
["Abe", "grandpa"] 
["Santa's Little Helper", "dog"] 

私はこのような反復:

family.each { |x, y| puts "#{x}: #{y}" } 

私はこれを取得:

Homer: dad 
Marge: mom 
Lisa: sister 
Maggie: sister 
Abe: grandpa 
Santa's Little Helper: dog 

誰かが、一方が他方対1を使用する場合がありますときに、2つの結果が(?角括弧、引用符、カンマを何、コロンの意味)異なり、どのように説明していただけますか?ありがとうございました!

答えて

1

ハッシュを反復するとき、key,valueのペアをパラメータとして2つの要素の配列の形式で渡します:[key, value]。これは、最初の例で["Homer", "dad"]が表示されている理由で、xが配列に割り当てられています。

2番目の例は同じですが、その場合は、ペアをxyに割り当てています。 xは配列の最初の要素を取得し、yは2番目の要素です。これはrubyでmultiple assignmentと呼ばれます。

2.2.2 :001 > x = {a: 1}.first 
=> [:a, 1] 
2.2.2 :002 > x 
=> [:a, 1] 
2.2.2 :003 > x,y ={a: 1}.first 
=> [:a, 1] 
2.2.2 :004 > x 
=> :a 
2.2.2 :005 > y 
=> 1 
0

最初の例では、ハッシュ(x)の各要素全体を繰り返して、のキー:値のペアとして出力し、括弧で囲まれた形式になります。

あなたの2番目の例では、再度ハッシュの各要素を反復しているが、特にキーと値(xy)にその要素を分割puts声明に供給され、そしてあなた自身のフォーマットでそれらを印刷します。

関連する問題