RubyMonk跟踪方法

时间:2015-06-22 21:41:27

标签: ruby methods eval

所以我完全迷失了它要求我做的事情。

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

所以我上面的请求完全没问题。我的问题围绕着以下问题......

  

跟踪单例方法是相同的,只是您使用&gt; singleton_method_added生命周期回调而不是method_added。 &gt; singleton_method_added具有更基本的性质,在&gt; BasicObject上定义。

     

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

     

让我们直接进行练习。

class Dojo
   @@singleton_methods_added = []

     def self.singleton_methods_added
        @@singleton_methods_added
     end
end

---屏幕截图低于--- http://imgur.com/Cjbmd2K

对于我想要做的事,我没有最模糊的想法,请有人帮助我。我现在已经吮吸了几个小时了。我很绝望。我确定它的东西非常简单,但我无法在我的生命中得到它。请新的一双眼睛!

我不喜欢他们对这里的说明模糊不清,而且他们没有为你提供任何提示&#34;或&#34;见解决方案&#34;。让我疯狂!

1 个答案:

答案 0 :(得分: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