Project

General

Profile

Feature #15573

Updated by mrkn (Kenta Murata) almost 2 years ago

Numeric#step disallows zero in the 2nd argument, but it allows zero passed as the value of `by:` keyword argument.    I confirmed that this inconsistency exists since 2.3. I want to allow zero in the 2nd argument, too. 

 ``` 
 >> 1.step(10, by: 0) { break } 
 => nil 
 >> 1.step(10, 0) { break } 
 Traceback (most recent call last): 
         5: from /Users/mrkn/.rbenv/versions/2.6.0/bin/irb:23:in `<main>' 
         4: from /Users/mrkn/.rbenv/versions/2.6.0/bin/irb:23:in `load' 
         3: from /Users/mrkn/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>' 
         2: from (irb):5 
         1: from (irb):5:in `step' 
 ArgumentError (step can't be 0) 
 ``` 

 Moreover, Range#step disallows zero if a block is given.    I want to relax also this restriction. 

 ``` 
 >> (1..10).step(0) { break } 
 Traceback (most recent call last): 
         6: from /Users/mrkn/.rbenv/versions/2.6.0/bin/irb:23:in `<main>' 
         5: from /Users/mrkn/.rbenv/versions/2.6.0/bin/irb:23:in `load' 
         4: from /Users/mrkn/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>' 
         3: from (irb):6 
         2: from (irb):6:in `rescue in irb_binding' 
         1: from (irb):6:in `step' 
 ArgumentError (step can't be 0) 
 ```

Back