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