Ruby从内部类访问常量
我有一个嵌套类,如下所示:Ruby从内部类访问常量,ruby,constants,inner-classes,Ruby,Constants,Inner Classes,我有一个嵌套类,如下所示: class Mammal H = "Mammal" class Human H = "Human" end end 我想做一个人体物体,在获得人体常数后,像这样: human = Mammal::Human.new # makes an object successfully puts human::H # does not work ** puts Mammal::Human::H #
class Mammal
H = "Mammal"
class Human
H = "Human"
end
end
我想做一个人体物体,在获得人体常数后,像这样:
human = Mammal::Human.new # makes an object successfully
puts human::H # does not work **
puts Mammal::Human::H # works ["Human"]
puts Mammal::H # works ["Mammal"]
**。。但它不会工作(“…不是类/模块[TypeError]”)。我做错了什么
我做错了什么
您试图引用错误上下文中的常量。常量是在类对象中定义的,而不是在实例中定义的。这项工作:
human = Mammal::Human.new
human.class.const_get(:H) # => "Human"
我做错了什么
您试图引用错误上下文中的常量。常量是在类对象中定义的,而不是在实例中定义的。这项工作:
human = Mammal::Human.new
human.class.const_get(:H) # => "Human"
常量属于类,因此通过
:
操作符的常量解析仅适用于类对象,而不适用于类的实例
话虽如此,您可以这样做:
human.class::H
Object#class
返回对象的类,相对于该类,您可以解析常量。常量属于类,因此通过:
操作符的常量解析仅适用于类对象,而不适用于类实例
话虽如此,您可以这样做:
human.class::H
Object#class
返回对象的类,相对于该类可以解析常量