Associative Array, get value instead of poiter using `if (auto ..)`, possible?

kdevel kdevel at vogtner.de
Sat Aug 31 22:06:26 UTC 2024


On Saturday, 31 August 2024 at 14:25:29 UTC, Paul Backus wrote:
> [...]
> Once the next release of Phobos comes out, with [PR 9039][1] 
> merged, you'll be able to do it like this:
>
> ```d
> import std.typecons;
>
> Nullable!V maybeGet(K, V)(V[K] aa, K key)
> {
>     if (auto ptr = key in aa)
>         return nullable(*ptr);
>     else
>         return Nullable!V.init;
> }
>
> void main()
> {
>     import std.stdio;
>
>     int[string] test = ["hello": 42];
>
>     if (auto it = test.maybeGet("hello"))
>     {
>         writeln("hello => ", it.get);
>     }
> }
> ```

Is that functionally different from

```
void main()
{
     import std.stdio;

     int[string] test = ["hello": 42];

     if (auto p = "hello" in test)
     {
         writeln("hello => ", *p);
     }
}
```

?


More information about the Digitalmars-d-learn mailing list