Techioz Blog

Ruby クラスの別のクラスのインスタンスと通信する

概要

これはおそらく以前に回答されていると思いますが、ボード検索を使用して解決策を見つけるための適切な語彙がありません。

私が達成したいのは、別のクラスのクラスのインスタンスのメソッドを呼び出すことです。

この粗雑な例は、私が達成したいことを示していると思います。

class ClassA
  def method_a
    return 'first example'
  end

  def method_b
    return 'second example'
  end
end

class ClassB
  def initialize
    object = classA.new
  end
end

the_example = classB.new
the_example.[whatever-I’m-missing-to-talk-with-object].method_b 
# should return 'second exampe'

解決策

object は、初期化の呼び出し後にスコープ外にならないようにインスタンス変数である必要があるため、代わりに @object と呼び出します。

次に、classB の定義の外で @object にアクセスできるようにする必要があるため、それを宣言する必要があります。

class ClassB
  attr_reader :object # lets you call 'some_instance_of_classb.object'
  def initialize
    @object = ClassA.new
  end
end