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