[英]Iterating over a Hash in Ruby. Difference between these two examples?
我正在嘗試學習一點Ruby。 有人可以向我解釋這兩個例子之間的區別嗎?
說我有一個哈希:
family = { "Homer" => "dad",
"Marge" => "mom",
"Lisa" => "sister",
"Maggie" => "sister",
"Abe" => "grandpa",
"Santa's Little Helper" => "dog"
}
如果我這樣迭代:
family.each { |x| puts "#{x}" }
我得到這個:
["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
有人可以解釋這兩個結果有何不同(方括號,引號,逗號,冒號分別是什么意思),以及何時可以使用一個對另一個。 謝謝!
迭代哈希時,它將以兩個元素的數組格式傳遞key
value
對作為參數: [key, value]
。 這就是在第一個示例中看到["Homer", "dad"]
的原因, x
被分配了數組。
第二個示例是相同的,但是在這種情況下,您要將該對分配給x
和y
。 x
獲取數組的第一個元素, y
獲取第二個元素,在Ruby中稱為多重分配 。
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
在第一個示例中,您要遍歷哈希( x
)的每個完整元素,並將其打印為單個key:value對,從而得到方括號格式。
在第二個示例中,您將再次遍歷哈希中的每個元素,但具體地是將該元素拆分為要放入puts
語句中的鍵和值( x
, y
),並使用自己的格式進行打印。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.