问题在于我需要一个包含n个元素的数组,其中每个元素都有2个属性(颜色和名称)。 我不认为使用另一个类并使每个元素成为对象将是最好的方法。
class House
def initialize
@door=Array.new
...
end
...
end
house=House.new
...
puts house.door[i].color
puts house.door[i].name
另一种方法是使用二维数组,其中:
house.door[i][0] would be house.door[i].name
house.door[i][1] would be house.door[1].color
但我仍然认为这些不是正确的方法。
答案 0 :(得分:2)
如果它是一个简单的脚本/程序,我会使用Struct.new(..)
你可以:
Door = Struct.new(:name, :color)
door = Door.new("name", "blue")
door.color # => "blue"
door.name # => "name"
答案 1 :(得分:1)
为什么不创建一个哈希:
door = Hash.new
door[name] = color
答案 2 :(得分:0)
我会使用OpenStruct,让您免于设计类。
house.door[0] = OpenStruct.new(color:'red', name:'Front Door')
house.door[0].color
答案 3 :(得分:0)
我不认为将每个元素作为对象是最好的方法。
你为什么这么认为?它被称为面向对象编程而不是面向数组的编程是有原因的!
Ruby是一种面向对象的语言。物体是它最擅长的。