DIP1046, "ref For Variable Declarations", has been Accepted

Nick Treleaven nick at geany.org
Mon Jun 24 11:08:32 UTC 2024


On Sunday, 23 June 2024 at 21:50:37 UTC, Vladimir Marchevsky 
wrote:
> On Sunday, 23 June 2024 at 13:29:21 UTC, Mike Parker wrote:
>> DIP1046, "ref For Variable Declarations", has been accepted:
>>
>> https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1046.md
>
>> which reduces the complexity of the code, as long-winded 
>> global names get a shorthand
>
> Does ref add anything compared to using an alias?..

`ref` will bind to lvalue expressions, e.g (from the DIP):

```d
ref int dark(ref int x, int i, int* q)
{
     ref m = *q;    // m refers to whatever q points to
     ...
}
```

`*q` is an expression, not a symbol. `ref` can bind to e.g. a 
struct field runtime value, or an lvalue returned from a function.

`alias` only allows giving new names for existing compile-time 
symbols.


More information about the Digitalmars-d-announce mailing list