Strange behaviour of Enumerable#each_with_object and array concatenation
Update: Brian VanLoo posted a very helpful comment explaining the behaviour I saw. Scroll down to the comments and read it to understand what's going on here.
I've been bitten several times by an apparent bug in ruby, using Enumerable's each_with_object
method. The problem appears to occur when passing an array as the target object, and adding to this object with +=
. The values added to the array don't appear to remain in the array, and the returned array is empty.
It's probably best described by some code, and I wrote a gist that shows it pretty well. Using Array#concat
works, whereas +=
does not. The other option is using a normal each
loop and adding to the array, which also works.
Is this a bug? Or have I missed something? I'm in the progress of submitting a bug report to ruby (but I'm having trouble with my account's confirmation email not being delivered), but if anyone can tell me why this isn't a bug then I'll be very grateful.