foreach () processing sequence

Carlos Santander csantander619 at gmail.com
Tue Feb 6 13:43:35 PST 2007


jicman escribió:
> == Quote from Johan Granberg's article
>> jicman wrote:
>>> == Quote from Kirk McDonald's article
>>>> jicman wrote:
>>>>> Greetings!
>>>>> 
>>>>> Imagine this declarion,
>>>>> 
>>>>> char[] str = ["bb", "cc", "aa", "00", "11", "zz", "dd"];
>>>>> 
>>>>> when I do a,
>>>>> 
>>>>> foreach (char[] s; str) writefln(s);
>>>>> 
>>>>> assuming that the str array has not been touched or altered in
>>> any
>>>>> way, will the sequence of execution **ALWAYS** follow the
>>> sequence
>>>>> of the array creation?  In other words, will the execution of
> the
>>>>> foreach above always display,
>>>>> 
>>>>> bb cc aa 00 11 zz dd
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> jos�
>>>> (Nitpick: The type of str is char[][].) Yes. An array is an ordered
>>>> sequence. (As opposed to, say, a
> hash
>>> table,
>>>> which is unordered.)
>>> You're not nitpick, but acurate. :-)
>>> 
>>> Ok, thanks.
>> I have wondered the same in the past. Is it documented somewhere?
> otherwise
>> I think it should be.
> 
> I agree.  I was just going to write a function to make sure that the the
> creation sequence was the sequence that it would execute on a foreach().

Check http://www.digitalmars.com/d/statement.html#ForeachStatement :
> For foreach, the elements for the array are iterated over starting at index 0
> and continuing to the maximum of the array. For foreach_reverse, the array
> elements are visited in the reverse order.


-- 
Carlos Santander Bernal


More information about the Digitalmars-d-learn mailing list