私は2つのクラスを持っているとしましょう。 1つのクラス、「親」には、もう1つのクラス「子」が多数あります。これは継承ではなく、私は親メソッドを子オブジェクトに作用させたくありません。私が望むのは、子オブジェクトが親オブジェクトを参照し、それから変数(child.parent.var)を取得し、親を変更する親メソッド(child.parent.update
)を呼び出すことができることです。Rubyで "親"、 "子"クラス(継承ではない)
初期化時に別のオブジェクトへの参照を渡すことができる1つのオブジェクト(これは子ではなく、子ではないと考えることができます)です。私はこれを親の子関係に比較して、親の情報を格納するデータベースに入れて、すべての子に複製する必要はありません。
例:
class Parent
attr_accessor :var
def initialize(num)
@var = num
end
def increase
@var += 1
end
end
class Child
attr_accessor :var, :parent
def initialize(parent, num)
@parent = parent
@var = num
end
def sum
@parent.increase
@parent.var + var
end
end
parent1 = Parent.new(1)
child1 = Child.new(parent1, 2)
child2 = Child.new(parent1, 3)
child1.parent.increase # update the parent variable
child2.parent.var # get the parent variable
上記のコードは、作業を行いますが、これを達成するために、より良い(より簡潔、またはそれ以上のルビーESQ)方法はありますか?
ご協力いただきありがとうございます。
ようこそ同じようにそれを呼び出すことができます。これはかなり素晴らしい最初の質問です。将来、問題の詳細をもう少し詳しく説明してください。 「あまりにも奇妙な気がする」とは、かなり曖昧な説明です。スタックオーバーフローは最近、ハードコードの問題に向いていますが、デザインやコード構造に関する質問はここでも話題になっています。あなたの実際の問題を必ず記述してください。多くの場合、http://softwareengineering.stackexchange.com/またはhttp://codereview.stackexchange.com/は、これらの種類の質問にも最適です。 –
@Holger他のサイトを参照しているときは、[クロスポストがぼやけていることを指摘する]ことがよくあります(http://meta.stackexchange.com/tags/cross-posting/info) – gnat
@HolgerJustあなたの知恵に感謝します。友人!まだ初心者なので、私は次の質問にあなたのアドバイスを取るでしょう:-) –