2016-09-20 87 views
0

我是新來的紅寶石,並提前道歉,因爲我強烈懷疑我錯過了這裏真正明顯的東西。但..如何存儲從哈希動態創建的對象?

我想基於哈希數組動態地創建對象。但是,我如何存儲對象?

如果我創建只有一個,我會做一個變量賦值,象這樣:

h = PuppetNode.new(hash) 
print h.hostname # foo.bar.com 

但怎麼樣?:這裏

array_of_hashes.each { | hash | 
    h = PuppetNode.new(hash) 
} 

這將導致「H」對象被覆蓋不會嗎? 我想我可以嘗試從哈希中提取某些內容以動態地命名該變量,但似乎這是不必要的,因爲各種實例變量標出了每個對象的獨特性。

我真的需要使用變量嗎?如果不是,我如何創建/存儲對象。如果是這樣,我怎樣才能動態地設置變量名稱而不痛苦的正則表達式使用?

在此先感謝

+0

你想要什麼輸出是完全的,我不清楚。 – Anthony

+0

(在我的代碼示例中更正了錯誤)想象一下'array_of_hashes'是三個哈希值。我如何得到三個對象,我可以用我在第一個例子中的相同方式引用它,其中h.hostname – spoovy

+1

'nodes = array_of_hashes.map {| hash | PuppetNode.new(hash)}'會產生一個'PuppetNode'對象數組。然後你可以通過'p nodes [0] .hostname'來訪問它們。 – Anthony

回答

1

如果你想存儲多個對象,你可以使用一個集合對象做到這一點。 Ruby帶有內置於核心庫中的兩種集合對象:Array(可由數字索引尋址的元素的線性序列)和Hash(從關鍵對象到值對象的映射,可由關鍵字尋址)。在標準庫中,還有其他種類的收集對象,如Set (a collection that tracks membership of values) and SortedSet