2012-11-01 68 views
0

我有這樣的結構:繼承和模塊在Ruby中

class1 < class2 

一個單純的孩子<父母的關係。

我得到了一個模塊module1。

文件CLASS_1.rb:

class1 < class2 

end 

文件CLASS_2.rb:

class2 
    include module1 
end 

文件MODULE_1.rb:

module module1 

end 

爲什麼會出現這樣的:

'<class:class2>': uninitialized constant class2::module1 (NameError) 

回答

2

類/模塊名稱應該是常量(即以大寫字母開頭)。

class Class1 < Class2 
    include Module1 
end 

而且也不要忘記需要相應的文件。

# class1.rb 
require_relative 'class2' 
require_relative 'module1' 

class Class1 < Class2 
    include Module1 
end 
+0

對不起,他們已經是大寫字母只是沒有寫它 –

2

module1必須在它被包括的時候創建。如果您尚未在CLASS_2.rb中定義/創建class2之前加載或需要MODULE_1.rb,那麼module1不會在其包含到class2中時創建。