使用self读取实例变量

时间:2013-12-09 23:54:04

标签: ruby instance-variables class-variables

我知道在类实例中我应该通过实例变量读取变量的值。 但是通过自我阅读它们有什么后果?

见下面的例子:

class Test   attr_writer :aa
  def testing
    puts @aa
    puts self.aa <-- what are the consequences if I apply attr_reader :aa and try to read 'aa' via self.aa ? can I read other value by accident?
  end

  def self.bb
    a = self.new
    a.aa = "111"
    a.testing
  end
end

Test.bb

1 个答案:

答案 0 :(得分:0)

在您的示例中,变量是您刚刚使用self.new

创建的对象的实例变量

同样重要的是要知道在testing方法中自我引用对象而不是类,因为它似乎是你想到的。在bob方法中,因为它是一个类方法,所以自我引用类。

但是,您可以在类本身中拥有实例变量(不要与可在所有类对象和类本身中访问的类变量@@混淆。)

以下是它的外观示例。

class Test

  class << self
    attr_writer :bb
  end

  def self.bb
    @bb
  end
end

Test.bb = 1
Test.bb