Issue #9948 has been updated by sawa (Tsuyoshi Sawada).


I withdraw this proposal. Please close it.

----------------------------------------
Feature #9948: Safely insert an object into an array
https://bugs.ruby-lang.org/issues/9948#change-78778

* Author: sawa (Tsuyoshi Sawada)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
When I insert an object using `Array#insert(index, object)` method (or `Array#[index]= object`), it happened sometimes that I mistakenly passed `index` that is too big, and too often in such cases was the bug very difficult to detect because in such case, `insert` will silently insert `nil` to fill up the empty slots:

~~~ruby
[:foo, :bar].insert(4, :baz) # => [:foo, :bar, nil, nil, :baz]
~~~

On the other hand, when the index is too small (negative), `index` raises an index error. I wish that an error were raised when the index is too big (when `index` is greater than `length` of `self`), but it is perhaps a bad idea to change the feature of `insert` by now. So I propose that a new method being added, something like `Array#safely_insert`, which works the same as `insert`, except that when `index` is larger than the size of the array, it should raise:

    Index Error: index #{indexs} too large for array; maximum: #{length}





-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>