Case Range Statement ..

Walter Bright newshound1 at digitalmars.com
Thu Jul 9 19:08:48 PDT 2009


Jérôme M. Berger wrote:
> Walter Bright wrote:
>> Nick Sabalausky wrote:
>>> "Walter Bright" <newshound1 at digitalmars.com> wrote in message
>>>> It's handy when you want to prefix one expression to another, as in:
>>>>
>>>>    (foo(), x + 3)
>>>
>>> I guess I'm not familiar with that syntax. What does that do and for 
>>> what purpose? 
>>
>> They're called Comma Expressions, and the left operand is evaluated 
>> first, its result discarded, then the right operand is evaluated and 
>> forms the type and result of the Comma Expression.
>>
>     I've always felt they were useless and confusing. What's the 
> advantage of "y = (foo(), x + 3);" over "foo(); y = x+3;"?

When you only see the x+3 because you're recursively walking the tree 
generating code.

>> It's handy for things like rewriting ++e so it can be used more than 
>> once but is only evaluated once:
>>
>>    (tmp = ++e, tmp)
> 
>     Uh? How is that different from "++e"

You can then use tmp more than once with only one increment of e.



More information about the Digitalmars-d mailing list