2015-06-22 92 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