On 6/14/17 12:35 PM, Luís Marques wrote:
On Wednesday, 14 June 2017 at 16:17:50 UTC, Steven Schveighoffer wrote:
I don't know if there is room to allow range-defined indexes and
foreach-defined indexes. foreach(a, b; someRange) has to do one or the
other. Otherwise, changes to how someRange operates can make this a
completely different operation.

Seems like exactly what we want. If you add a customization to someRange
to change the iteration behavior then each relevant foreach
automatically switches from the default to the requested behavior.
That's exactly the point of programming to abstract interfaces.

For example:

foreach(i, v; hashmap) => i is counter, v is value

Later hashmap adds support for iterating key and value. Now i is key, v is value. Code means something completely different.

Compare with

foreach(i, v; hashmap.enumerate)

Intent is clear from the code.

-Steve

Reply via email to