覆盖===方法以及如何调用它

时间:2013-11-20 10:28:12

标签: ruby

这是覆盖===方法的正确方法:

def ===(b)
    self.venue === b.venue
    print " new === !!!!"
end

我如何在对象ab上调用它(作为同一类的实例)都具有变量venue

我尝试了puts a.===(b),但它不起作用。 (它说private method called for #<class1:0xsdfsd...>

2 个答案:

答案 0 :(得分:1)

是的,这是覆盖===方法的正确方法。

您可以使用以下方法调用此方法:

a === b

a.===(b)

您有此错误可能是因为您将===方法定义为私有。将其定义为公共方法(在private关键字之上),它应该有效。

答案 1 :(得分:1)

该方法应返回truefalse,在这种情况下,您打印一些内容,返回值始终为零。尝试更改订单并首先使用打印。

虽然可以使用===调用它,但在case语句或grep方法中使用运算符更为常见。