sun*_*304 2 ruby activerecord ruby-on-rails
在浏览ActiveRecord源代码时,我发现:
class ActiveRecord::Base
Run Code Online (Sandbox Code Playgroud)
我不明白课程名称是怎么样的.ActiveRecord::Base
请为我解释,我没有得到这个概念.
ActiveRecord实际上是一个Ruby 模块,最初定义类似于:
module ActiveRecord
# contents of module
end
Run Code Online (Sandbox Code Playgroud)
模块为要定义的类和常量提供名称空间,这意味着可以在模块内定义类,也可以ActiveRecord::Base.所以这是一样的
module ActiveRecord
class Base
# contents of class
end
end
Run Code Online (Sandbox Code Playgroud)
通常,::运算符用于命名空间解析,用于引用命名空间内的常量.从技术上讲,任何以大写字母开头的变量都是常量,因此Base是一个常量,其值是类本身!如果有一个常量命名FOO定义ActiveRecord如下:
module ActiveRecord
FOO = "foo"
end
Run Code Online (Sandbox Code Playgroud)
那么它的完全限定变量名称就是ActiveRecord::FOO.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |