【问题标题】:RubyMonk Tracking MethodsRubyMonk 跟踪方法
【发布时间】:2015-06-22 21:41:27
【问题描述】:

所以我完全不知道它要我做什么。

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

跟踪方法

向类或模块添加方法是一个合乎逻辑的起点。 >method_add 是 Module 上的一个实例方法,因此继承到 ?>Class 中。当您使用它时,您只需将该方法实现为类(或模块)上的实例 > 方法 - 所以它基本上是一个 self 方法 - 并监听 > 添加的方法的名称。

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

生命周期回调很简单,只要稍加练习,您就会很快理解它。这是一个供您尝试的练习 - >只需让测试通过即可。

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

我对我要做什么一无所知,有人请在这里帮我。我已经为此苦恼了几个小时了。我很绝望。我敢肯定它非常简单,但我一辈子都无法得到它。请换一双眼睛!

我不喜欢他们在这里的说明含糊不清,而且他们没有为您提供任何“提示”或“查看解决方案”。把我逼疯了!

【问题讨论】:

  • 点击运行按钮会发生什么?
  • 看起来他们并没有要求你做任何事情。只是展示一个概念。
  • 当你只点击运行按钮而不添加任何代码时,它只会返回“不正确,这不是我们要查找的代码。”

标签: ruby methods eval


【解决方案1】:

我终于想通了,我昨天离开它直到今天早上。我想新鲜的眼睛有帮助。

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

【讨论】:

  • 不错。我对红宝石僧侣不熟悉。你会推荐它吗?尽管存在困难?
  • 当然,它很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 2015-08-10
相关资源
最近更新 更多