鑑於代碼在Ruby中什麼是行「className類<基地」在這種情況下意味着
require 'gdata'
class Contacts
class Gmail < Base
是什麼意思,當我們說「<基地」,這是否意味着從定義的基類繼承在模塊gdata中,在這種情況下不會與其他可能需要的模塊發生衝突。
或者這是否意味着別的?
鑑於代碼在Ruby中什麼是行「className類<基地」在這種情況下意味着
require 'gdata'
class Contacts
class Gmail < Base
是什麼意思,當我們說「<基地」,這是否意味着從定義的基類繼承在模塊gdata中,在這種情況下不會與其他可能需要的模塊發生衝突。
或者這是否意味着別的?
Base沒有特別的意義。
ruby-1.9.2-p180 :001 > Base.inspect
NameError: uninitialized constant Object::Base
除非在gdata中定義了一個名爲Base或Contacts :: Base的類,那麼該示例應該會生成一個錯誤。
class Base
def self.hello
"oh hi!"
end
end
class Base2
def self.hello
"ahoy!"
end
end
class Contacts
class Base
def self.hello
"hi 2 u"
end
end
class Gmail < Base
end
class Gmail2 < Base2
end
end
ruby-1.9.2-p180 :024 > Base.hello
=> "oh hi!"
ruby-1.9.2-p180 :025 > Contacts::Gmail.hello
=> "hi 2 u"
ruby-1.9.2-p180 :026 > Contacts::Gmail2.hello
=> "ahoy!"
謝謝Kimmmo,所以「
類Gmail
只是一個正常的嵌套類定義,恰好是Base
的子類。顯然Base
某處定義的文件gdata
中卻無處沒有指出gdata
是一個Ruby 模塊,如果它是一個模塊,你沒有表現出來,混入到(含include
)Contacts
,所以我不知道有任何衝突擔心。
謝謝雷「顯然基地被定義在文件gdata的某處」 - 這回答了我的問題。因爲我在ActiveRecord :: Base中遇到過「Base」,所以我想知道它是否是通用名稱來公開某些功能。因爲在這個例子中它沒有名稱空間,我想知道它是來自「gdata」還是來自更高級別的地方。 – naruvimama
是否存在您想知道的特定衝突? – jtbandes
不,我並不是不擔心一個特定的衝突,我想知道Base是否意味着特別的東西,或者它是否來自「gdata」。我還遇到了其他一些需要發表聲明的片段。由於我沒有看到它的命名空間,因爲它通常是完成的(就像在Activerecord :: Base),我想知道它是否有特殊的含義。 – naruvimama