Actions
Bug #15254
closedArray#slice should not treat the index past the last element as a special case
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Description
Array#slice should not treat the index past the last element as a special case. This causes Array#slice(start, length) has inconsistent behavior when given out of bounds values for the start parameter. It sometimes returns an array, and sometimes nil.
describe "inconsistencies starting in past the end" do
it { @array.slice(5,3).must_equal [] } # passes
it { @array.slice(6,3).must_equal [] } # returns nil
it { @array.slice(100,3).must_equal [] } # returns nil
end
describe "failures when starting before the start" do
it { @array.slice(-5,1).must_equal [0] } # passes
it { @array.slice(-5,5).must_equal @array } # passes
it { @array.slice(-6,2).must_equal [0] } # returns nil
it { @array.slice(-6,6).must_equal @array } # returns nil
end
The attached script contains the minitest tests.
Files
Updated by marcandre (Marc-Andre Lafortune) about 6 years ago
- Status changed from Open to Rejected
This is per spec.
Here's one way to see the start indices:
[ :a, :b, :c ]
# ^ ^ ^ ^
# 0 1 2 3
# -3 -2 -1
Other indices (4, -4) are out of bounds and will result in nil
return.
Actions
Like0
Like0