如何存储从哈希动态创建的对象?

时间:2016-09-20 13:53:54

标签: ruby hash

我是红宝石的新手,并提前道歉,因为我强烈怀疑我错过了一些非常明显的东西。但..

我正在尝试基于哈希数组动态创建对象。但是如何存储对象?

如果我只创建一个,我会像这样做一个变量赋值:

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

但是这里怎么样?:

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

这会导致'h'对象被覆盖不会吗? 我想我可以尝试从哈希中提取一些内容来动态命名变量,但似乎没有必要,因为各种实例变量都标出了每个对象的唯一性。

我真的需要使用变量吗?如果没有,我如何创建/存储对象。如果是这样,我怎样才能动态设置变量名而不用痛苦的正则表达式?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果要存储多个对象,可以使用集合对象来执行此操作。 Ruby带有内置于核心库中的两种集合对象:Array(可通过数字索引寻址的线性元素序列)和Hash(从关键对象到值对象的映射,可通过键寻址) 。在标准库中,还有其他类型的集合对象,例如Set (a collection that tracks membership of values) and SortedSet