Thread overview
foreach statement: Are there no Iterators in D?
Nov 08, 2015
J.Frank
Nov 08, 2015
Rikki Cattermole
Nov 08, 2015
J.Frank
Nov 08, 2015
rsw0x
November 08, 2015
Hello,

I am looking for something like the "Iterator" Interface in Java or PHP.
Is there something comparable in D that can be used with foreach?

Thanks,

J.Frank

November 08, 2015
On 09/11/15 12:40 AM, J.Frank wrote:
> Hello,
>
> I am looking for something like the "Iterator" Interface in Java or PHP.
> Is there something comparable in D that can be used with foreach?
>
> Thanks,
>
> J.Frank

opApply if you want 0 .. N iterations during for a foreach statement and having it reset each time.

Otherwise you want ranges :)

An input range is more or less an iterator as you would think of it.
You only need popFront, front and empty. But here is the "official" interface. http://dlang.org/phobos/std_range_interfaces.html#InputRange
You can have structs an an input range, it is quite common since it doesn't allocate.
November 08, 2015
On Sunday, 8 November 2015 at 11:47:41 UTC, Rikki Cattermole wrote:
> opApply if you want 0 .. N iterations during for a foreach statement and having it reset each time.

No, that won't help. I want to be able to iterate over a data set of infinite size.

> Otherwise you want ranges :)
>
> An input range is more or less an iterator as you would think of it.
> You only need popFront, front and empty.

Ah yes, that's what I missed. Looks good. Thank you. :)

November 08, 2015
On Sunday, 8 November 2015 at 11:57:16 UTC, J.Frank wrote:
> On Sunday, 8 November 2015 at 11:47:41 UTC, Rikki Cattermole wrote:
>> opApply if you want 0 .. N iterations during for a foreach statement and having it reset each time.
>
> No, that won't help. I want to be able to iterate over a data set of infinite size.
>
>> Otherwise you want ranges :)
>>
>> An input range is more or less an iterator as you would think of it.
>> You only need popFront, front and empty.
>
> Ah yes, that's what I missed. Looks good. Thank you. :)

FWIW since you mentioned Java, if you're accustomed to Java 8 streams they're very similar to D's ranges.