【发布时间】:2014-03-14 08:02:52
【问题描述】:
我正在学习 Code School 的 Ruby Bits 课程,在第 5 级,它们涵盖了模块。
在钩子方法部分,为 LibraryUtils 模块添加一个 self.included 方法钩子是一个挑战,它将扩展传入类的 ClassMethods。代码如下:
module LibraryUtils
def add_game(game)
end
def remove_game(game)
end
module ClassMethods
def search_by_game_name(name)
end
end
end
class AtariLibrary
include LibraryUtils
extend LibraryUtils::ClassMethods
end
非常简单易行。首先将上述方法包含在我们的模块中,如下所示:
def self.included(base)
base.extend(ClassMethods)
end
然后只需取出扩展名,这样我们就不会出现重复了。
问题是,当我在使用 Ruby 2.0 的 codeschool 环境(浏览器)之外尝试此操作时,我得到一个无方法错误:
atari_library.rb:27:in `<main>': undefined method `search_by_game_name' for #<AtariLibrary:0x2b07ef8> (NoMethodError)
请记住,我使用的是相同的代码。
如果有人对此有任何想法,我将不胜感激。
【问题讨论】:
-
你能说明你是如何调用这个方法的吗?
-
你在你的答案中得到了它!我正在做你展示的底部(错误)示例。谢谢