2016-03-26 19 views
1

別のクラスのオブジェクトを作成するメソッドを呼び出そうとしています。私がすると、オブジェクトが作成されたというフィードバックが得られますが、そのオブジェクトでは何もしないように見えます(オブジェクトクラスからメソッドを呼び出すなど)。次に例を示します。クラスメソッド内で異なるクラスのオブジェクトを作成する

class A 
    def initialize 

    end 

    def generate 
     var = B.new 
    end 
end 

class B 
    def initialize 

    end 

    def declare 
     puts "I exist!" 
    end 
end 

test = A.new 
test.generate 
var.declare 

これは、「未定義のローカル変数またはメソッド 'var'」エラーを返します。私はこれについて間違っていますか?私が知ることができる最高ののは、インスタンス内でのみこのオブジェクトを作成しているということですが、インスタンスでインスタンスを処理しようとしても、定義されていません。これを行う別の方法は私が考えていない、または私はこれを間違っているのですか?ありがとう!

+1

変数 'var'のスコープは、' generate'メソッドに限られているようです。それをインスタンス変数にします。 – Sid

答えて

4

varはgenerateメソッド内でのみ「可視」です。それをクラスの外に出す。

class A 
    def generate 
     B.new 
    end 
end 

class B 
    def declare 
     puts "I exist!" 
    end 
end 

test = A.new 
var = test.generate # var is an instance of B 
var.declare # => I exist! 

変数の使用を避けることもできます。

A.new.generate.declare # => I exist! 
関連する問題