From: me@... Date: 2015-01-26T18:20:32+00:00 Subject: [ruby-core:67818] [ruby-trunk - Misc #10783] String#concat has an "appending" behavior Issue #10783 has been updated by Antonio Scandurra. Tsuyoshi Sawada wrote: > I can't find the place in the documentation that says "Concatenation (aka +)". Is this your own claim? If so, then that is not incorrect. I'll copy over the relevant excerpts. ~~~ str + other_str ��� new_str Concatenation���Returns a new String containing other_str concatenated to str. ~~~ ~~~ str << integer ��� str str << obj ��� str Append���Concatenates the given object to str. If the object is a Integer, it is considered as a codepoint, and is converted to a character before concatenation. ~~~ But then `concat` is defined as: ~~~ concat(integer) ��� str concat(obj) ��� str Append���Concatenates the given object to str. If the object is a Integer, it is considered as a codepoint, and is converted to a character before concatenation. ~~~ I summarized what I had read in the documentation, therefore it was not an exact quote. ---------------------------------------- Misc #10783: String#concat has an "appending" behavior https://bugs.ruby-lang.org/issues/10783#change-51226 * Author: Antonio Scandurra * Status: Open * Priority: Normal * Assignee: ---------------------------------------- Ruby String documentation (http://www.ruby-doc.org/core-2.2.0/String.html) introduces the two terms **Appending** and **Concatenation**: - Concatenation (aka `+`) ���Returns a new String containing other_str concatenated to str. - Append (aka `<<`) ���Concatenates the given object to str. However, calling `concat` results in an appending operation. I find this particularly confusing and against the Principle of Least Surprise (e.g. I'd expect `concat` to actually concatenate something). On the other hand I understand that changing such a small method would result in a quite significant breaking change. Do you see this as an inconsistency? If yes, is there any particular design (or historical) reason behind it? Thank you. P.s. Seems like this is the case for `Array` as well. -- https://bugs.ruby-lang.org/