Issue #17056 has been reported by TylerRick (Tyler Rick).

----------------------------------------
Feature #17056: Array#index: Allow specifying start index to search like String#index does
https://bugs.ruby-lang.org/issues/17056

* Author: TylerRick (Tyler Rick)
* Status: Open
* Priority: Normal
----------------------------------------
The docs for `String#index` say:

> If the second parameter is present, it specifies the position in the string to begin the search.

So you can do:

```ruby
> 'abcabc'.index('a',2)
#=> 3

'abcabc'.index('a')
#=> 0
```

I would expect to also be able to do:
```ruby
'abcabc'.chars.index('a')
#=> 0

'abcabc'.chars.index('a', 2)
ArgumentError: wrong number of arguments (given 2, expected 0..1)
from (pry):19:in `index'
```

After using this feature on strings, it is surprising to find that it is not available on arrays.

This would also give Ruby better parity with other programming languages that support this, like Python:

```python
>>> list('abcabc')
['a', 'b', 'c', 'a', 'b', 'c']
>>> list('abcabc').index('a')
0
>>> list('abcabc').index('a', 2)
3
```

Ideally, we would also add an optional end index arg as well, but `String#index` does not have one, so we could a separate proposal to add `end` to both methods at the same time.

Other languages that allow specifying both start and end indexes:
- [Python](https://docs.python.org/3/tutorial/datastructures.html)
- [C#](https://docs.microsoft.com/en-us/dotnet/api/system.array.indexof?view=netcore-3.1)
- ...



-- 
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>