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
返回对象的类,相对于该类可以解析常量