Issue #15092 has been updated by marcandre (Marc-Andre Lafortune).

Status changed from Open to Feedback

> ```
> r = Range.new 0, Float::INFINITY, 3 
> ```

No need to change the constructor. Instead of:

```
Range.new 0, Float::INFINITY, 3
```

Use the shorter
```
(0...) % 3
```




----------------------------------------
Feature #15092: Provide step count in Range constructor
https://bugs.ruby-lang.org/issues/15092#change-73942

* Author: v0dro (Sameer Deshmukh)
* Status: Feedback
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------

I would like to propose making changes to the Range constructor so that a user can specify
a `step` count along with `start` and `stop`. Since Ruby 2.6 will introduce a `step` property
in Ranges anyway I think this will be a useful addition.

Here's my reasons for the changes:

When creating software libraries for numerical computing, it is common to query the data
container for values in a particular range at some given steps. For example, say I have the
following NArray object:
~~~ ruby
a = NArray.new([1,2,3,4,5,6,7,8,9,10,11,12])
~~~

And I want the values `1`, `4`, `7`, `10` and `12`, I can simply specify a Range like this:
~~~ ruby
r = Range.new 0, Float::INFINITY, 3 # start, stop (upto the end), step
a[r]
# => NArray([1, 4, 7, 10, 12])
~~~

This can possibly also be extended to `Array#[]` so that users can get ranges of values at
steps without much worry.




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