Should the comma operator be removed in D2?

Robert Jacques sandford at jhu.edu
Mon Nov 16 21:41:47 PST 2009


On Tue, 17 Nov 2009 00:06:27 -0500, Yigal Chripun <yigal100 at gmail.com>  
wrote:

> Robert Jacques wrote:
>> On Mon, 16 Nov 2009 17:53:45 -0500, Stewart Gordon  
>> <smjg_1998 at yahoo.com> wrote:
>>
>>> dsimcha wrote:
>>> <snip>
>>>> Axe.  Looks like the only things it's good for are making code  
>>>> undreadable and
>>>> abusing for loop syntax to...
>>>>  Make code unreadable.
>>> <snip>
>>>
>>> Suppose you want the increment of a for loop to change two variables  
>>> in parallel.  I don't call that making code unreadable.
>>>
>>> Stewart.
>>  Yes the classic use case of the comma operator is multi-variable  
>> declarations/increments in a for loop.
>
> This was argued before and as I and others said before, this is *not* a  
> use case for the comma separator.
>
> e.g.
> for (int a = 0, b = 1; condition(); a++, b++) {...}
>
> int a = 0, b = 1 // this is a declaration and not an expression
>
> a++, b++ // isn't assigned to any variable and can be treated as a tuple
>
> the only use case that will break is if the two increments are dependent  
> on the order (unless tuples are also evaluated from left to right):
> e.g.
> a + 5, b + a //
>
> I doubt it very much that anyone ever uses this, it's too unreadable to  
> be useful.

However, I imagine tuple(a++,b++) would have some overhead, which is  
exactly what someone is trying to avoid by using custom for loops.

Personally, I like using a..b => tuple(a,b), since it also solves the  
multi-dimensional slicing and mixed indexing and slicing problems.



More information about the Digitalmars-d mailing list