我知道在类实例中我应该通过实例变量读取变量的值。 但是通过自我阅读它们有什么后果?
见下面的例子:
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
答案 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