2013-06-28 6 views
-2

Как я могу ссылаться на объект из метода, не передавая его как переменную?ссылочный объект, не переходя в новый объект

Я получаю сообщение об ошибке:

NameError: undefined local variable or method ‘my_object’ for Myclass:Class

class B 
    attr_accessor :somethings 

    include Enumerable 

    def initialize(*values) 
    self.somethings = [] 
    end 
end 

my_object = B.new({d:'d'}) 

class Myclass 

    def self.my_method 
    p my_object 
    end 
end 


Run: Myclass.my_method 

Что я НЕ хочу, чтобы сделать для всех моих методов ...

def self.my_method(my_object) 
    p my_object 
    end 

Я мог бы также решить вопрос с использование от глобальной переменной

$my_object = B.new({d:'d'}) 

Однако я действительно хочу, чтобы переменная была доступна для моих методов в классе Myclass.

+0

Можете ли вы выразиться лучше? –

+0

Пример, который вы дали, как и ожидалось (при отсутствии неопределенной функции 'add_my_values'). Просьба привести пример, который создает описание NameError. –

+0

@BorisStitnicky Я попытался переписать сообщение, надеюсь, это станет более ясным. – user2012677

ответ

4

I only really want to make the variable available to my methods in Myclass class.

Затем вы должны определить его в качестве переменного экземпляра в соответствующих сферах Myclass. Как и сейчас, my_object является локальной переменной и не отображается из-за границы области видимости.

class Myclass 
    @my_object = B.new({d:'d'}) 

    def self.my_method 
    p @my_object 
    end 
end 
+0

Вот что я искал, извините за такой рудиментарный вопрос. – user2012677