簡體   English   中英

Ruby:使用鍵/值數組設置新哈希

[英]Ruby: setting a new hash with an array of keys/values

(--工作人員刪除的問題--)

這是類方法和實例方法之間區別的示例嗎?

確切地。

但是為什么這可以縮短為Hash[*order]

Ruby 將some_object[]解釋為對some_object上名為[]的方法的調用。 這對於哈希並不特殊,您可以在您自己的任何類中實現[]方法並使用該語法。

有人可以解釋這里發生了什么,以及是否有其他方法可以將數組中的值添加到哈希中?

Hash[*order]調用一個類方法( Hash#[] )來創建一個新的 Hash。 o.[](*order)不起作用的原因與您不能對其調用new原因相同: {}.new new沒有任何意義。 您不能在類的實例上調用類方法。

您可以使用merge添加值:

o = Hash.new
o.merge(Hash[*order])

o = {*order}不起作用,因為{}是哈希文字的語法,將*order放在那里沒有意義。

Hash(*order)Kernel#Hash ,一種只需要一個參數的方法。

當你寫Hash(*order)你實際上是在調用Kernel模塊中的Hash方法,這與調用Hash類中的[]方法是不一樣的。 請參閱Kernel#Hash文檔以了解那里發生了什么。

暫無
暫無

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

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