number ranges

Salih Dincer salihdb at hotmail.com
Fri Jan 21 20:16:16 UTC 2022


On Friday, 21 January 2022 at 17:25:20 UTC, Ali Çehreli wrote:
>
> Ouch! I tried the following code, my laptop got very hot, it's 
> been centuries, and it's still running! :p

:)

> ```d
>    size_t length() inout {
>      auto len = 1 + (last - first) / step;
>      return cast(size_t)len;
>    }
> ```
> Does that not return 1 for an empty range?

Yes, but it will never return an empty range:

```d
   enum e = 1;
   auto o = inclusiveRange(e, e); // only one element
   assert(!o.empty);
   assert(o.length == e);
   assert(o.equal([e]));
```

> Additionally, just because we *provide* a step, now we 
> *require* division from all types (making it very cumbersome 
> for user-defined types).

I don't quite understand what you mean?

Salih



More information about the Digitalmars-d-learn mailing list