2011-08-09 103 views
4

鑑於代碼在Ruby中什麼是行「className類<基地」在這種情況下意味着

require 'gdata' 

class Contacts 
    class Gmail < Base 

是什麼意思,當我們說「<基地」,這是否意味着從定義的基類繼承在模塊gdata中,在這種情況下不會與其他可能需要的模塊發生衝突。

或者這是否意味着別的?

+0

是否存在您想知道的特定衝突? – jtbandes

+0

不,我並不是不擔心一個特定的衝突,我想知道Base是否意味着特別的東西,或者它是否來自「gdata」。我還遇到了其他一些需要發表聲明的片段。由於我沒有看到它的命名空間,因爲它通常是完成的(就像在Activerecord :: Base),我想知道它是否有特殊的含義。 – naruvimama

回答

1

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!" 
+0

謝謝Kimmmo,所以「 naruvimama

0

Gmail只是一個正常的嵌套類定義,恰好是Base的子類。顯然Base某處定義的文件gdata中卻無處沒有指出gdata是一個Ruby 模塊,如果它是一個模塊,你沒有表現出來,混入到(含includeContacts,所以我不知道有任何衝突擔心。

+0

謝謝雷「顯然基地被定義在文件gdata的某處」 - 這回答了我的問題。因爲我在ActiveRecord :: Base中遇到過「Base」,所以我想知道它是否是通用名稱來公開某些功能。因爲在這個例子中它沒有名稱空間,我想知道它是來自「gdata」還是來自更高級別的地方。 – naruvimama

相關問題