shorter foreach syntax - C++0x range-based for

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Nov 1 08:14:04 PDT 2010


On 11/1/10 9:09 AM, Gary Whatmore wrote:
> Nick Treleaven Wrote:
>
>> There's a C++0x proposal for a range-based 'for' statement:
>> http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html
>>
>> The upcoming GCC 4.6 C++ compiler changes list support for this:
>> http://gcc.gnu.org/gcc-4.6/changes.html
>>
>> I think the syntax could be useful for D to shorten and improve on the
>> status quo a little. Here's the C++ example:
>>
>> int array[5] = { 1, 2, 3, 4, 5 };
>> for (int&  x : array)
>>    x *= 2;
>>
>> Currently D has:
>>
>> int array[5] = [1, 2, 3, 4, 5];
>> foreach (ref x; array)
>>    x *= 2;
>>
>> I think this is better:
>>
>> for (ref x : array)
>>    x *= 2;
>>
>> Apart from being 4 chars shorter, I think it looks more natural using the
>> ':' instead of ';'. A lesser benefit is it allows reuse of the 'for'
>> keyword, making the 'foreach' keyword unnecessary.
>>
>> Maybe this would be acceptable for D?
>
> No, 1) it's too late to change it. 2) the syntax comes from Java. It would be embarrasing to admit that Java did something right.
>
>   - G.W.

Java did a lot of things right (be they novel or not) that are present 
in D, such as reference semantics for classes, inner classes with outer 
object access etc.

Andrei


More information about the Digitalmars-d mailing list