为什么const_get(class_name)
会返回实际的类,即使const_get
是一个应该返回给定名称的常量的方法。
Ruby只是将类存储为常量,还是其他类似的东西?
答案 0 :(得分:0)
不,const_get
不会返回常量。常量不是对象,不能返回它们。 const_get
做什么,是否返回常量指向的对象。换句话说,
const_get(:Foo)
或多或少与
相同Foo
如果常量指向的对象恰好是一个类,那么,是的,显然const_get
将返回一个类。如果常量指向的对象恰好是其他东西,那么const_get
将返回其他内容。
Foo = 'not a class'
Bar = Class.new
const_get(:Foo)
# => 'not a class'
const_get(:Bar)
# => Bar
答案 1 :(得分:0)
在ruby中,类只是类Class
的实例。
klass = Class.new do
# class definition
end
通过这种方式,您将获得一个匿名课程。如果将其分配给常量
MyClass = Class.new do
# class definition
end
然后你给这个班的名字MyClass
。
定义类的标准ruby方式只是语法糖!