From: Robert Klemme Date: 2008-02-04T02:24:56+09:00 Subject: Re: how does sort work? On 03.02.2008 04:09, Chris Sepic wrote: >> to understand this, you can think of "sort" taking a function as a >> parameter. and sort() will pass 2 numbers to this function, and >> rearragne the elements according to the return value of -1, 0, or 1. >> >> that's it. to understand it fully, you can read about "iterators" in >> Ruby. where you can take a block as a function, and "yield" arguments >> to this function, and get back a return value. > > I understand sorting and sorting algorithms - I was tripped up by the > function as a parameter thing. Thanks! Yeah, a block is an anonymous function. You can see how it works if you insert a print statement: irb(main):001:0> a = [ "d", "a", "e", "c", "b" ] => ["d", "a", "e", "c", "b"] irb(main):002:0> a.sort {|x,y| p [x,y]; x<=>y} ["d", "e"] ["e", "b"] ["d", "b"] ["a", "d"] ["c", "d"] ["b", "a"] ["a", "c"] ["b", "c"] => ["a", "b", "c", "d", "e"] irb(main):003:0> A nice quiz might be to find out the sorting algorithm based on this output. :-) Kind regards robert