有没有办法在一个类中使用太空飞船方法和神奇的“method_missing”?每当我尝试使用undefined method '<'
这样的定义时,下面的示例都会给我foo1 < foo2
:
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
任何帮助表示赞赏:)
答案 0 :(得分:6)
简短回答:
您在Foo
:
include Comparable
长答案:
仅通过重新定义太空船运营商,您无法获得<
,>
,<=
等方法。
您可以通过加入Comparable
来获得这些方法。那些方法然后使用太空船运算符来提供有效的响应。
Enumerable
或多或少会发生什么:
您包含该模块,实施each
方法,然后获取“免费”的所有其他方法(map
,select
等)。
答案 1 :(得分:1)
我不确定我明白你的问题是什么。对于&lt;和&gt;要创建的方法,将include Comparable
放入类定义中并定义&lt; =&gt;实例方法。