Why doesn't foreach support iterating?

Chris Katko ckatko at gmail.com
Wed Oct 17 01:17:40 UTC 2018

int [50]data;
foreach(i, datum; data){} // works

File file("gasdgasd");
foreach(i, line; file.byLine){} //NOPE.
foreach(line; file.byLine){} //works.

I finally noticed in the docs it says "for arrays only." The 
question is, why?

Every language that I used previously (as far as I can remember) 
implemented foreach in a way that's consistent / orthogonal.

Is there a way around this? Because currently I have to liter my 
foreach's with ugly manual index variables that hold scope even 
after it's gone.

int i = 0;
foreach(line; file.byLine){
//do stuff
i = 2; // still exists!

More information about the Digitalmars-d-learn mailing list