From: Dave Thomas Date: 2008-02-12T01:51:15+09:00 Subject: Re: Array#sort unexpected behaviour On Feb 11, 2008, at 10:47 AM, daniel åkerud wrote: > irb(main):044:0> a=[[1, "abc"],[3, "def"],[2, "efg"]] > => [[1, "abc"], [3, "def"], [2, "efg"]] > irb(main):045:0> a.sort { |a, b| a[0] <=> b[0] } > => [[1, "abc"], [2, "efg"], [3, "def"]] > irb(main):046:0> a > => [1, "abc"] > > A new sorted array is correctly returned, but "a" itself is not left > intact. > It seems to have something to do with me using an array-of-arrays. Your block parameter is also called 'a'. In Ruby 1.9, this isn't an issue, but in 1.8, the variable is the same as the block parameter. Dave