IndexError-returning counterparts to destructive Array methods
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 = :foo; a # => [nil, :foo] .insert(1, :foo) # => [nil, :foo] .fill(:foo, 1, 1) # => [nil, :foo]
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#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.