2014-01-06 1 views
1

я могу иметь класс объявить его имя всякий раз, когда создается экземпляр, как:Определение имени переменного, ссылающиеся новый экземпляр внутри инициализации

class Klass 
    def initialize 
     puts "#{self.class} instance created" 
    end 
end 

instance = Klass.new #=> Klass intance created 

Как я могу иметь имя экземпляра объявленное из класса инициализаторе? что-то вроде:

class Klass 
    def initialize 
     puts "#{self.class} instance #{self.instance} created" 
    end 
end 

jacksaw = Klass.new #=> Klass instance "jacksaw" created 
+1

Будет ли ['# object_id'] (http://www.ruby-doc.org/core-2.1.0/Object.html#method-i-object_id) соответствовать вашим потребностям? – pjs

+0

Ваш код недействителен. – sawa

+0

@sawa - ах ... из-за цитат? Благодарю. Будет редактировать. – Lokua

ответ

4

Невозможно. Сначала будет создан Klass.new. Затем ему будет присвоена локальная переменная jacksaw. В момент создания экземпляра он не может определить, к какой локальной переменной он будет назначен.

+0

После инициализации объекта класса 'Класс', как вы определяете, какие переменные ссылаются на него? (local, instance, global alike) – rudolph9

+0

Используйте 'local_variables' и т. д., чтобы получить список переменных в пределах области. Затем сравните значение 'eval'ed (или' local_variable_get') каждого из них с данным объектом. – sawa

+0

Обратите внимание, что 'local_variable_get' является новым с Ruby 2.1 (в 2.0 отсутствует). – Phrogz

Смежные вопросы