Repost: make foreach(i, a; range) "just work"
Regan Heath
regan at netmail.co.nz
Mon Feb 24 02:29:45 PST 2014
On Fri, 21 Feb 2014 19:42:41 -0000, Jesse Phillips
<Jesse.K.Phillips+D at gmail.com> wrote:
> On Friday, 21 February 2014 at 16:41:00 UTC, Regan Heath wrote:
>> and make this possible too:
>>
>> foreach([index, ]value; range) { }
>
> I understand the user interface is simple, but you created 3 statements
> about how it could be achieved and work/not work with the existing
> setup. Each have their positives and negatives, it would not make sense
> to "just choose one" and hope it all works out.
>
>>> if AA is changed to a double[string], then your value loop iterates on
>>> keys and your key loop iterates on values.
>>
>> No, I was actually suggesting a change here, the compiler would use
>> type matching not ordering to assign the variables. So because 'v' is
>> a string, it is bound to the value not the key.
>
> And string is the key, double[string] is not the same as string[double].
>
> Also string[string], ambiguous yet common.
>
> There are many things to consider when adding a feature, it is not good
> to ignore what can go wrong.
Yes.. something is not being communicated here. I addressed all this in
the OP.
>> Thanks! Ok, so how is this working? ahh, ok I think I get it.
>> enumerate returns a range, whose values are Tuples of index/value
>> where value is also a tuple so is flattened, and then the whole lot is
>> flattened into the foreach.
>
> Sounds like you understand it, seams foreach will flatten all tuples.
>
>> I don't think this affects what I actually want to change, we can have:
>>
>> foreach(index, value; range) { }
>>
>> and still flatten tuples into value, you would simply have to provide
>> one extra variable to get an index.
>>
>> Make sense?
>
> Yes, but I'm saying we don't need it because
>
> foreach(index, value; range.enumerate) { }
>
> is good enough. Not perfect, but good enough.
No, not good enough. This should just work, there is no good reason for
it not to.
R
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list