Actions
Feature #8172
closedIndexError-returning counterparts to destructive Array methods
Status:
Feedback
Assignee:
-
Target version:
-
Description
There are a few desctructive Array
methods that take an index as an argument and silently insert nil
if the index is out of range:
a = []; a[1] = :foo; a # => [nil, :foo]
[].insert(1, :foo) # => [nil, :foo]
[].fill(:foo, 1, 1) # => [nil, :foo]
Among them, Array#[]
has a counterpart that returns an IndexError
when the index is out of range:
[].fetch(1) # => IndexError
and this is useful to avoid bugs that would be difficult to find if Array#[]
were used. However for Array#insert
and Array#fill
, there are no such counterparts, and that fact that these methods silently insert nil
is often the cause of a bug that is difficult to find.
I suggest there should be some versions of these methods that return IndexError
when index is out of range:
[].insert!(1, :foo) # => IndexError
[].fill!(:foo, 1, 1) # => IndexError
I believe this would make debugging easier.
Actions
Like0
Like0Like0Like0Like0Like0Like0