On Sunday, 10 December 2017 at 02:31:47 UTC, Jonathan M Davis wrote:
On Sunday, December 10, 2017 02:02:31 Dave Jones via Digitalmars-d wrote:

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

Honestly, it would have never occurred to me to try and modify the variables declared in the foreach like that, and my first inclination is to think that it shouldn't be allowed, but thinking it through, and looking at how things actually work, I don't think that the current behavior is really a problem.

Its not something I normally do but I was porting some C++ code and changed the fors to foreaches. Just it took a while to figure out what was going wrong.


then you can increment i the way you want to. So, maybe modifying the loop variable in something like

foreach(i; 0 .. 10)
{
    ++i;
}

should be disallowed, but I don't really think that the current behavior is really a problem either so long as it's properly documented. Modifying i doesn't really cause any problems and ref or the lack thereof allows you to control whether it affects the loop. Ultimaetly, it looks to me like what we currently have is reasonably well designed. It doesn't surprise me in the least if it's not well-documented though.

Well it's just one of those "APIs should be hard to use in the wrong way" kinda things to me. Either the loop var should be actually the loop var rather than a copy, or it should be an error to modify it.

Anyway it's not a bit deal like you say, but should be better explained in the docs at least.

Thanks,

Reply via email to