有没有办法在一个类中使用太空船方法和神奇的"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
感谢任何帮助:)
简短回答:
您在Foo
:中缺少这行代码
include Comparable
长答案:
仅仅通过重新定义宇宙飞船操作符是无法获得<
、>
、<=
等方法的。
您可以通过包含Comparable
来获得这些方法。这些方法然后使用宇宙飞船操作员来提供有效的响应。
Enumerable
:或多或少就是这样
包含模块,实现each
方法,然后"免费"获得所有其他方法(map
、select
等)。
我不确定我是否理解你的问题;和>方法,将include Comparable
放入类定义中,并定义<=>实例方法。