class MyClass
@my_class_instance_variable = "here"
p @my_class_instance_variable # => "here"
class << self
p @my_class_instance_variable # => nil
end
end
class MyClass
p @my_class_instance_variable # => "here"
end
为什么要p
打印第二张,而要打印nil
第三p
张"here"
呢?我对单例类定义(class << self
)的理解是,它具有与类定义(class MyClass
)相同的作用域。
(此问题的标题相似,但重点不同。)
我对单例类定义(类<< self)的理解是,它具有与类定义相同的作用域
不。范围是不同的。您@my_class_instance_variable
在的范围内定义MyClass
,但尝试在MyClass
的单例类的范围内访问它。
就像检查一样容易:
class Foo
puts self #=> Foo
class << self
puts self #=> #<Class:Foo>
end
end
输出为:
Foo
#<Class:Foo>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句