On Monday, 25 November 2019 at 09:00:49 UTC, Dukc wrote:
On Monday, 25 November 2019 at 03:07:08 UTC, Fanda Vacek wrote:
Is this preferred design pattern?

```
int main()
{
        int a = 1;
//ref int b = a; // Error: variable `tst_ref.main.b` only parameters or `foreach` declarations can be `ref`
        ref int b() { return a; }
        b = 2;
        assert(a == 2);
        return 0;
}
```

Fanda

It's okay, but I'd prefer an alias, because your snippet uses the heap needlessly (it puts variable a into heap to make sure there will be no stack corruption if you pass a pointer to function b() outside the main() function)

Yes alias can help, but my original need was like

void main() @safe
{
        int[] a = [1, 2];
        alias head = a[0];
        head = 2;
        assert(a[0] == 2);
}

there the alias doesn't work

Fanda

Reply via email to