在浏览ActiveRecord源代码时,我发现:
class ActiveRecord::Base
我不明白类名是怎样的ActiveRecord::Base
请为我解释,我没有得到这个概念。
答案 0 :(得分:5)
ActiveRecord
实际上是一个Ruby Module,最初定义类似于:
module ActiveRecord
# contents of module
end
模块为要定义的类和常量提供名称空间,这意味着类可以在模块内定义,如ActiveRecord::Base
所示。所以这与
module ActiveRecord
class Base
# contents of class
end
end
通常,::
运算符用于命名空间解析,用于引用命名空间内的常量。从技术上讲,任何以大写字母开头的变量都是常量,因此Base
是一个常数,其值是类本身!如果FOO
中定义的ActiveRecord
常量如下:
module ActiveRecord
FOO = "foo"
end
然后它的完全限定变量名称为ActiveRecord::FOO
。