From: duerst@...
Date: 2018-09-09T03:12:28+00:00
Subject: [ruby-core:88906] [Ruby trunk Feature#15092] Provide step count in	Range constructor

Issue #15092 has been updated by duerst (Martin D��rst).


v0dro (Sameer Deshmukh) wrote:


> 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])
> ~~~

Wouldn't the result be `[1, 4, 7, 10, 13]`?



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

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