我的L
常数是否存在?
module M
class Z
class << self
L = "foo"
end
end
end
=> M::Z::L
=> NameError: uninitialized constant M::Z::L
=> M::Z.constants
=> []
module B
class N
X = "bar"
end
end
=> B::N::X
=> "bar"
=> B::N.constants
=> [:X]
我看过this,但我不明白。
答案 0 :(得分:3)
你需要这样做:
module M
class Z
class << self
L = "foo"
end
end
end
M::Z.singleton_class::L # => "foo"
L
在Z
的单例类中定义。
"L"
存储在M::Z
的单例类的常量集中,您现在可以将其称为S
。 M::Z::L
它实际上是在L
及其祖先的常量表中搜索此常量M::Z
。由于它们都不是S
,因此查找失败。