2010-07-14 147 views
1
 

module Hints 
module Designer 
    def message 
    "Hello, World!" 
    end 
end 
end 

p Hints::Designer.message 

 

爲什麼這會給我以下錯誤...?爲提示::設計師紅寶石模塊

未定義的方法`消息」:模塊(NoMethodError)

回答

7

你需要做的是定義消息作爲一個類的方法(而不是實例方法)。嘗試:

module Hints 
module Designer 
    def self.message 
    "Hello, World!" 
    end 
end 
end 

puts Hints::Designer.message 

如果你想使用實例方法與模塊,必須擴展使用模塊和任何給定的約束條件(見http://ruby-doc.org/core/classes/Module.html)的對象。

+0

這工作...很好.. thnx aloadz ... – 2010-07-14 14:41:53

1

使用p Hints::Designer.new.message

消息是一個實例方法不是一類方法

+0

仍然得到了同樣的錯誤,通過這樣做... :( – 2010-07-14 14:41:24

+0

sry,只有當'設計師'是一個類的作品,我沒有閱讀整個文本仔細,我的眼睛看到他們曾經看到... http://codepad.org/AZ5TaShz – clyfe 2010-07-15 09:37:08

2

你想用這樣的:

module Hints 
module Designer 
    def self.message 
    "Hello, World!" 
    end 
end 
end 

也就是說,讓message「階級」的方法(這是前一個實例方法)。這看起來有點奇怪,但請記住,模塊通常用於創建混合類,因此「模塊實例」在該上下文中是有意義的。