just an idea (!! operator)
Jonas Drewsen
jdrewsen at nospam.com
Fri Jul 13 02:24:34 PDT 2012
On Thursday, 12 July 2012 at 22:36:19 UTC, Andrei Alexandrescu
wrote:
> On 7/12/12 4:49 PM, David Piepgrass wrote:
>>>> Yeah, I've been planning to try and get this into D one day.
>>>> Probably
>>>> something like:
>>>> (a ?: b) -> (auto __tmp = a, __tmp ? __tmp : b)
>>>
>>> gcc used to have that extension and they dropped it...
>>
>> But GCC can't control the C++ language spec. Naturally there
>> is a
>> reluctance to add nonstandard features. It's a successful
>> feature in C#,
>> however, and a lot of people (including me) have also been
>> pestering the
>> C# crew for "null dot" (for safely calling methods on object
>> references
>> that might be null.)
>>
>> I don't see why you would use ?: instead of ??, though.
>
> I think we can add coalesce() with any number of lazy arguments
> that returns the leftmost argument that is nonzero. It's a
> useful function but not frequent enough to warrant an operator.
I Agree. Looking at the Groovy link from Christophe I noticed
their Safe Navigation Operator ?.
Basicly it returns the final value in a dereference chain or null
if any objects in the chain are null:
// a is null if user or address or street is null. No exception
thrown.
auto a = user?.address?.street;
This is a very nice operator that would be tricky to implement as
a function or template.
/Jonas
More information about the Digitalmars-d
mailing list