class Test
class << self
attr_accessor :some
def set_some
puts self.inspect
some = 'some_data'
end
def get_some
puts self.inspect
some
end
end
end
Test.set_some => Test
puts Test.get_some.inspect => Test nil
在上面,我可以找到 self 作为 Test 本身,但不返回some_data
as 输出。
但是,虽然我按照以下方式进行了修改,但它返回了预期的输出
class Test
class << self
attr_accessor :some
def set_some
puts self.inspect
self.some = 'some_data'
end
def get_some
puts self.inspect
self.some
end
end
end
Test.set_some => Test
puts Test.get_some.inspect => Test some_data
有什么区别?
编辑
现在在第一个示例中,如果我将 getsome
方法设置为
Test.some = 'new_data'
puts Test.some.inspect #=> new_data
Test.set_some
puts Test.get_some.inspect => new_data
现在这让我更加困惑了。