module Hints
module Designer
def message
"Hello, World!"
end
end
end
p Hints::Designer.message
为什么这会给我以下错误??
Hints :: Designer的未定义方法`message':模块(NoMethodError)
答案 0 :(得分: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)。
答案 1 :(得分:2)
你想用这个:
module Hints
module Designer
def self.message
"Hello, World!"
end
end
end
即,使message
成为“类”方法(在它是实例方法之前)。这看起来有点奇怪,但请记住,模块通常用于创建mixin类,因此“模块实例”在该上下文中是有意义的。
答案 2 :(得分:1)
使用p Hints::Designer.new.message
message是一个实例方法而不是类方法