2
在浏览ActiveRecord的源代码,我发现:理解的ActiveRecord :: Base类名
class ActiveRecord::Base
我不明白一类的名字可以是怎么样的ActiveRecord::Base
请解释这对我来说,我没有得到这个概念。
在浏览ActiveRecord的源代码,我发现:理解的ActiveRecord :: Base类名
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
。
我想现在我明白了,我认为这个类的ActiveRecord :: Base是openclass,对吧? – sunny1304 2013-03-27 06:42:00
是的,“class ActiveRecord :: Base”是模块ActiveRecord的缩写;类Base“,它”打开“类,以便您可以在其中定义方法。 – 2013-03-27 06:43:56
感谢您的帮助。 – sunny1304 2013-03-27 06:48:25