2011-06-22 72 views
0

有沒有辦法在一個類中使用宇宙飛船方法和神奇的「method_missing」?下面的例子給我undefined method '<'每當我試圖用foo1 < foo2像definiton:「def <=>」vs「def method_missing」

class Foo 

    def initialize(params) 
    @parent= params[:parent] 
    end 

    def <=>(o) 
    ... 
    end 

    def method_missing(sym, *args, &block) 
    @parent.send sym, *args, &block 
    end 
end 

任何幫助表示讚賞:)

+2

method_missing與問題無關。 – gtd

+0

如此真實 - 工作時間過長,沒有看到明顯的;) – pagid

回答

6

簡短的回答:

你錯過了這行代碼裏面Foo

include Comparable 

長回答:

你沒有得到<><=等方法只是通過重新定義太空船操作員。

您通過包含Comparable獲得這些方法。那些方法然後使用飛船運營商提供有效的迴應。

這或多或少會發生什麼用Enumerable

你包括模塊,實現each方法,然後得到所有其他方法(mapselect等)的「自由」。

1

我不知道我理解你的問題是什麼。對於要創建的<和>方法,請將include Comparable放入您的類定義中,並定義< =>實例方法。