0

问题是我需要一个包含 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

但我仍然认为这些都不是正确的方法。

4

4 回答 4

2

如果它是一个简单的脚本/程序,我会使用 Struct.new(..)

你可以有:

Door = Struct.new(:name, :color)
door = Door.new("name", "blue")
door.color # => "blue"
door.name  # => "name"
于 2013-02-21T04:19:27.650 回答
1

为什么不只创建一个哈希:

door = Hash.new
door[name] = color
于 2013-02-21T05:23:31.800 回答
0

我不认为 [...] 将每个元素都作为对象是最好的方法。

为什么你这么想?它被称为面向对象编程而不是面向数组编程是有原因的!

Ruby 是一种面向对象的语言。对象是它最擅长的。

于 2013-02-21T11:23:41.557 回答
0

我会使用 OpenStruct,让您免于设计课程。

house.door[0] = OpenStruct.new(color:'red', name:'Front Door')
house.door[0].color
于 2013-02-21T04:20:25.160 回答