opDollar and length

Jonathan M Davis via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Dec 28 10:40:35 PST 2014


On Sunday, December 28, 2014 18:21:41 Tobias Pankrath via Digitalmars-d-learn wrote:
> On Sunday, 28 December 2014 at 18:12:42 UTC, Joseph Rushton
> Wakeling via Digitalmars-d-learn wrote:
> > A question that suddenly occurred to me, and I realized I
> > didn't know the answer.
> >
> > Why is it necessary/desirable to define separate .length and
> > .opDollar methods for custom types?
>
> To allow slicing for types that don't have a length property but
> are terminated by a sentinel value, like null terminated strings
> or single linked lists.
>
> It's usefull for multi-dimensional containers as well.

Indeed, though there's definitely been discussion of making it so that
opDollar is not necessary under at least some circumstances when length is
defined:

https://issues.dlang.org/show_bug.cgi?id=7177

But unfortunately, the nitty gritty details are just complicated enough that
it hasn't happened yet. I really wish that it would though so that we can
require that random access ranges define opDollar and then actually be able
to use opDollar for random access ranges in generic code.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list