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
)具有相同的范围。
(此question具有相似的标题,但它有不同的焦点。)
答案 0 :(得分:1)
我对单例类定义(类&lt;&lt; self)的理解是 它与类定义具有相同的范围
不。范围不同。您在@my_class_instance_variable
的范围内定义了MyClass
,但是如果MyClass
的单身类,则会尝试在范围内访问它。
检查如下:
class Foo
puts self #=> Foo
class << self
puts self #=> #<Class:Foo>
end
end
输出:
Foo
#<Class:Foo>