2015-06-22 90 views
1

所以我完全迷失在它要求我做的事情上。RubyMonk跟踪方法

https://rubymonk.com/learning/books/5-metaprogramming-ruby-ascent/chapters/31-lifecycle-hooks/lessons/70-introduction-lifecycle-callbacks

跟踪方法

的除了一个类或模块的方法的是开始的逻辑位置。 > method_added是Module上的一个实例方法,因此继承到?> Class。当你使用它的时候,你只需要在类(或模块)上实现一个实例>方法 - 所以它是一个自我方法,基本上 - 并且监听>添加的方法的名称。

它从运行时收到的唯一信息是该方法的名称,>符号的形式。

生命周期回调非常简单,足以让您理解,通过一点练习就能快速理解它。这里有一个练习让你尝试 - >简单地让测试通过。

class Dojo 
    @@methods_added = [] 

    def self.methods_added 
     @@methods_added 
    end 

    def self.method_added(method_name) 
     @@methods_added << method_name 
    end 
end 

所以我上面完全没有问题的请求。我的问题围绕以下内容:

除了您使用> singleton_method_added生命周期回调而不是method_added之外,跟踪单例方法是相同的。 > singleton_method_added是一个更基本的特性,定义在BasicObject上。

与method_added值得注意的唯一有趣的区别是,因为> singleton_method_added本身就是一个单例方法,所以只要它被添加,它就会收到一个回调 - >关于它本身。

让我们直接进入练习。

class Dojo 
    @@singleton_methods_added = [] 

    def self.singleton_methods_added 
     @@singleton_methods_added 
    end 
end 

---下列屏幕撷取画面--- http://imgur.com/Cjbmd2K

我一点都不知道想法,以我所期待的事,有人请帮我在这里。我已经吸了几个小时了。我很绝望。我确信它的东西非常简单,但我无法得到它为我的生活。新的眼睛请!

我不喜欢他们对这里的说明含糊不清,再加上他们没有提供任何“提示”或“看到解决方案”。驾驶我疯狂!

+0

会发生什么? –

+0

看起来他们并没有要求你做任何事情。只是展示一个概念。 –

+0

当你只需点击运行按钮无需添加任何代码,它只是返回“不正确的,这不是我们所寻找的代码。” – jammer

回答

0

我终于明白了,我昨天走了,直到今天早上。我猜新鲜眼睛有帮助。当你点击运行按钮

class Dojo 
    @@singleton_methods_added = [] 

def self.singleton_methods_added 
    @@singleton_methods_added 
end 

def self.singleton_method_added(method_name) 
    @@singleton_methods_added << method_name 
    end 
end 
+0

不错。我不熟悉Ruby Monk。你会推荐它吗?尽管存在困难? –

+0

当然,它非常有帮助。 – jammer