Jesse Phillips jessekphillips+D at
Tue Nov 2 07:39:27 PDT 2010

I'll come back with a more complete answer latter, but first.

spir Wrote:

> * I wrote Range as class, but I rather meant an interface. D does not let me do that, apparently because there is no data slot in a D interface. Is then an interface a kind of data-less superclass? Or is there something I misunderstand?

Interfaces describe what can something of that type can do, not what it has. Data fields are not allowed only function signatures and functions that perform local modifications.

> 	auto range = ...;
> 	while (range.continues) {
> 		doSomethingWith(range.element);
> 		range.step();
> 	}

Note that you are not actually using a Range as it is defined by D. In fact it is exactly the same, but named differently, here is what D's range interface looks like.

> 	auto range = ...;
> 	while (!range.empty) {
> 		doSomethingWith(range.front);
> 		range.popFront();
> 	}

More information about the Digitalmars-d-learn mailing list