通过发送自我分配

时间:2013-03-04 09:01:27

标签: ruby

我有两个数组ab。我可以使用a = a + b作为

重写send
a = a.send(:+, b)

有没有办法使用a += b重写send,这样的话?

a.send(:+=, b)

2 个答案:

答案 0 :(得分:3)

+是一个运算符方法。 +=只是一个运算符,没有相应的方法。它是a = a + b的语法快捷方式。您不能将:+=send一起使用。

答案 1 :(得分:1)

就像塞尔吉奥所说的那样,+=不能这样做,但你可以用concat来做。

a.send(:concat, b)

请注意,这与执行+=不完全相同,因为使用concat时,a将引用与之前相同的对象,而使用+=,它将是一个新创建的对象。