[swift-evolution] Feature proposal: Range operator with step

Erica Sadun erica at ericasadun.com
Wed Apr 6 13:58:23 CDT 2016


> On Apr 6, 2016, at 12:43 PM, Dave Abrahams <dabrahams at apple.com> wrote:
> 
> 
> on Wed Apr 06 2016, Erica Sadun <erica-AT-ericasadun.com> wrote:
> 
>>    On Apr 6, 2016, at 12:16 PM, Dave Abrahams via swift-evolution
>>    <swift-evolution at swift.org> wrote:
>>    (0..<199).striding(by: -2)
>> 
>>    are even or odd.
>> 
>> (0..<199).striding(by: -2): 0..<199 == 0...198 Even
>> (1..<199).striding(by: -2): 1..<199 == 1...198 Even
> 
> I understand the logic that got you there, but I find it incredibly
> counter-intuitive that striding by 2s over a range with odd endpoints
> should produce even numbers... I can't imagine any way I'd be convinced
> that was a good idea.

Guidance:

When using odd integer literals to produce an even number sequence,
prefer the `...` operator to the `..<` operator and change your ending
literal to an even number.

-- E


> 
>> (0..<198).striding(by: -2): 1..<198 == 0...197 Odd
>> (1..<198).striding(by: -2): 1..<198 == 1...197 Odd
>> 
>> -- E
>> 
> 
> -- 
> Dave



More information about the swift-evolution mailing list