On Saturday, 7 March 2020 at 15:44:38 UTC, Arine wrote:
The case when there isn't a value should be handled explicitly,
not implicitly. Propogating a None value
isn't useful
Except when it is useful, and shouldn't be handled explicitly. I
have code in D, C and C++ that looks like this:
ReturnValue result = someInitialValue;
auto foo = getFoo();
if (!foo) return result;
auto bar = foo.fun();
if (!bar) return result;
return bar.gun();
In C#, this would be:
return getFoo()?.fun().gun() ?? someInitialValue;
And with implicit handling in Optional!T, it looks like this:
return getFoo().oc.fun().gun().or(someInitialValue);
Clearly the latter two are more readable, and I'm not gonna care
that it's a little slower in the 99% of cases where speed is not
important.
--
Simen