optional assignment
    Basile B. 
    b2.temp at gmx.com
       
    Wed Feb  5 15:34:29 UTC 2025
    
    
  
On Sunday, 2 February 2025 at 03:30:17 UTC, Walter Bright wrote:
> ```
> if (!a) a = b;
> ```
>
> Doesn't seem that bad. I did some searches and found hardly any 
> instances of it, though that was across the dmd sources.
I dont't know what regex have you used but here I've just tried 
`if( )+\(\![a-zA-Z_][a-zA-Z_0-9.]*\` and almost directly found an 
interesting example in typesem.d:
```d
Type referenceTo(Type type)
{
     if (type.ty == Terror)
         return type;
     if (!type.rto)
     {
         Type t = new TypeReference(type);
         type.rto = t.merge();
     }
     return type.rto;
}
```
could become
```d
Type referenceTo(Type type)
{
     if (type.ty == Terror)
         return type;
     return type.rto ?= new TypeReference(type).merge();
}
```
in particular here the opt-assign saves the double load on `type` 
to obtain `type.rto` as a lvalue.
More generally to the criticism that is "that does not seem very 
useful" I'd reply that at some point new language additions are 
necessarily "niches".
    
    
More information about the dip.ideas
mailing list