我是红宝石的新手,并提前道歉,因为我强烈怀疑我错过了一些非常明显的东西。但..
我正在尝试基于哈希数组动态创建对象。但是如何存储对象?
如果我只创建一个,我会像这样做一个变量赋值:
h = PuppetNode.new(hash)
print h.hostname # foo.bar.com
但是这里怎么样?:
array_of_hashes.each { | hash |
h = PuppetNode.new(hash)
}
这会导致'h'对象被覆盖不会吗? 我想我可以尝试从哈希中提取一些内容来动态命名变量,但似乎没有必要,因为各种实例变量都标出了每个对象的唯一性。
我真的需要使用变量吗?如果没有,我如何创建/存储对象。如果是这样,我怎样才能动态设置变量名而不用痛苦的正则表达式?
提前致谢
答案 0 :(得分:1)
如果要存储多个对象,可以使用集合对象来执行此操作。 Ruby带有内置于核心库中的两种集合对象:Array
(可通过数字索引寻址的线性元素序列)和Hash
(从关键对象到值对象的映射,可通过键寻址) 。在标准库中,还有其他类型的集合对象,例如Set
(a collection that tracks membership of values) and SortedSet
。