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