在Ruby中,重载运算符的正确方法是什么? 要重新定义+的工作方式,我需要做什么? 当使用+运算符时,此函数未被调用。
def +(a,b)
return a * b
end
p 2 + 2
在Ruby中,重载运算符的正确方法是什么? 要重新定义+的工作方式,我需要做什么? 当使用+运算符时,此函数未被调用。
def +(a,b)
return a * b
end
p 2 + 2
重载运算符的解析是基于第一个操作数所属的类,因此如果您想要重载简单整数的加法,可以尝试以下方式:
class Fixnum
def +(other)
return self * other
end
end
顺便说一下,我不建议您实际这样做。
+
有两个参数?对我来说,它显然只应该有一个:毕竟它是一个二元运算符,而二元运算符有两个操作数,这就是为什么它们被称为“二元”运算符的原因。显然,第一个操作数是self
,因为 Ruby 是一种面向对象的语言,所以只能有另一个参数。当然,+
的文档只列出了一个参数。 - Jörg W Mittag