From: Robert Klemme Date: 2004-02-26T00:14:50+09:00 Subject: Operators +, += and = in Ruby 2 Hi all, this occurred to me some days ago and I'd like to hear what others think. Operator += can't be user defined but instead is extended to a combination of "+" and assignment: "x += y" becomes implicitely "x = x + y". Now, wouldn't it be better to turn that around and have people define operator += and automatically convert operator + like in: "x + y" becomes implicitely "x.dup += y" The reason I'm offering this is performance: "x = x + y" is slower than an inplace manipulation (that += would do), which is often what's desired here. On the downside: - This will likely break a lot of code already defined unless one would allow to define "+" for a while (possibly with a warning). - The change has subtle effects, i.e., people relying on "x += y" to create a new instance and not changing the state of x might encounter surprising effects. - dup might or might not be the appropriate method to create a copy depending on the class at hand. When defining operator +, we are currently free in deciding what's the type of result of this operation. That freedom would definitely go away. What do others think? Did I overlook something? Thx! robert