ruby中的类和常量之间的区别w.r.t const_get?

时间:2015-05-15 08:31:03

标签: ruby

为什么const_get(class_name)会返回实际的类,即使const_get是一个应该返回给定名称的常量的方法。 Ruby只是将类存储为常量,还是其他类似的东西?

2 个答案:

答案 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方式只是语法糖!