On 11 Aug 2011, at 17:03, viciousfish wrote: > I am noodling with the Ruby Koans and I ran across an Array slice > behavior that I just can't quite wrap my brain around: > > ruby-1.9.2-p180 :102 > array = [:peanut, :butter, :and, :jelly] > => [:peanut, :butter, :and, :jelly] > ruby-1.9.2-p180 :103 > array[4,0] > => [] > ruby-1.9.2-p180 :104 > array[5,0] > => nil > > from http://www.ruby-doc.org/core/classes/Array.html#M000267 > "Returns nil if the index (or starting index) are out of range." > > I don't understand why the 4th element is an empty array, whereas the > 5th element is out of range. I would expect the 4th element to be out > of range as 'array' contains elements 0-3.
You're right -- this behaviour is a bit strange, and doesn't seem to match that documentation. I was about to say this looks like a bug in Ruby, but then I checked the 3rd edition of Programming Ruby, which has this to say about the #slice method: "Returns nil if the index of the first element selected is greater than the array size. If the start index equals the array size and a length or range parameter is given, an empty array is returned." This matches the behaviour you see, so it seems somebody is at least aware of this, and it's perhaps even intentional. Might be worth posting the query to the Ruby mailing list, to see if anyone knows why #slice is designed this way. Chris -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

