From: Gary Wright Date: 2011-06-30T04:49:16+09:00 Subject: [ruby-core:37673] [Ruby 1.9 - Bug #4541] Inconsistent Array.slice() Issue #4541 has been updated by Gary Wright. This discussion might help explain the rational for the current behavior: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/380636 There is also a related rationale in this posting: http://www.phwinfo.com/forum/comp-lang-ruby/462990-array-index-length-strange-behaviour.html#post2148794 ---------------------------------------- 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.3 ruby -v: ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux] =begin 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]. =end -- http://redmine.ruby-lang.org