From: redmine@... Date: 2011-04-12T21:10:30+09:00 Subject: [ruby-core:35723] [Ruby 1.9 - Bug #4541] Inconsistent Array.slice() Issue #4541 has been updated by Jonas Pfenniger. I don't see the advantage of having nil returned in any case since the empty array already expresses the "there is no object in that range". Out of bound can be tested separately if necessary, but most of the cases you just want to get a range and a resulting array. Having also nil being returned means that you need some more code to test return.nil? && return.empty? ---------------------------------------- Bug #4541: Inconsistent Array.slice() http://redmine.ruby-lang.org/issues/4541 Author: Marcin Pietraszek Status: Assigned Priority: Normal Assignee: Yukihiro Matsumoto Category: Target version: 1.9.2 ruby -v: ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux] Array slice/[] method is a bit inconsistent. Is it just poorly documented "feature" or a bug? In API doc I can't find this behaviour mentioned as a "special case". def test_array_slice array = ['a', 'b', 'c'] assert_equal nil, array[3] assert_eaual nil, array[4] assert_eaual [], array[3, 0] # assert_equal nil, array[4, 0] # [] expected (or both nils in array[3, 0] and array[4, 0]) assert_equal ['c'], array[2..2] assert_equal [], array[3..3] # assert_equal nil, array[4..4] # [] expected (or both nils in array[3..3] and array[4..4]) end Same behaviour can be reproduced on ruby 1.8.7 (2010-12-23 patchlevel 330) [x86_64-linux]. -- http://redmine.ruby-lang.org