2010-07-14 145 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“阶级”的方法(这是前一个实例方法)。这看起来有点奇怪,但请记住,模块通常用于创建混合类,因此“模块实例”在该上下文中是有意义的。