0

問題は、各要素が 2 つの属性 (色と名前) を持つ n 要素の配列が必要なことです。別のクラスを使用して各要素をオブジェクトにすることが最善の方法だとは思いません。

class House
    def initialize
        @door=Array.new
        ...
    end
    ...
end

house=House.new
...
puts house.door[i].color
puts house.door[i].name

もう 1 つの方法は、次のような 2 次元配列を使用することです。

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 に答える