在浏览 ActiveRecord 源代码时,我发现:
class ActiveRecord::Base
我不明白一个类名是怎么回事ActiveRecord::Base
请为我解释一下,我不明白这个概念。
在浏览 ActiveRecord 源代码时,我发现:
class ActiveRecord::Base
我不明白一个类名是怎么回事ActiveRecord::Base
请为我解释一下,我不明白这个概念。
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
.