簡體   English   中英

遍歷Ruby中的Hash。 這兩個例子有什么區別?

[英]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被分配了數組。

第二個示例是相同的,但是在這種情況下,您要將該對分配給xy 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語句中的鍵和值( xy ),並使用自己的格式進行打印。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM