Case Range Statement ..

Don nospam at nospam.com
Mon Jul 13 02:59:02 PDT 2009


Michiel Helvensteijn wrote:
> Andrei Alexandrescu wrote:
> 
>> void main()
>> {
>>      foreach_reverse (i; 0.7 .. 100.7)
>>      {
>>          write(i, " ");
>>      }
>> }
>>
>> The last number printed is -0.3.
> 
> A question if I may.
> 
> Why does D allow iteration over an interval of floats? A floating point
> number has no direct successor or predecessor. Any such interval would
> contain zero, one or infinite elements.
> 
> Given the -0.3, I'm assuming you increase/decrease by 1.0 each iteration. Is
> this useful enough to be the standard behavior?
> 

It's a petri dish. Perfect breeding ground for bugs.

real BIG = 2.0 /(real.epsilon);

foreach(i; BIG .. BIG + 2) {
   ...
}

Infinite loop, since BIG + 1 == BIG.



More information about the Digitalmars-d mailing list