Current sentiment on Nullable.get

Jonathan M Davis newsgroup.d at jmdavisprog.com
Sat Dec 15 15:04:18 UTC 2018


On Saturday, December 15, 2018 5:33:04 AM MST Rubn via Digitalmars-d wrote:
> On Saturday, 15 December 2018 at 04:06:55 UTC, Jonathan M Davis
>
> wrote:
> > On Friday, December 14, 2018 8:26:17 PM MST Rubn via
> >
> > Digitalmars-d wrote:
> >> As a side note you could also easily add a separate function
> >> that would do what you are suggesting:
> >>
> >> bool hasValue() const;
> >>
> >> which wouldn't check if the value is null (for naturally
> >> nullable types). Now, tell me, what would you name the
> >> function to check if the value is null, including for
> >> naturally nullable types if you wanted to add it to the
> >> current Nullable struct ? What would you name that function to
> >> make it obvious to a read at first glance that that is how it
> >> functions.
> >
> > Changing the behavior of Nullable would silently break existing
> > code. So, regardless of whether Nullable's current behavior is
> > desirable, simply changing its behavior is completely
> > unacceptable.
> >
> > And if we were designing Nullable from scratch, trying to make
> > the names involved clearer in the process, then it would
> > probably just be something like Optional, with isEmpty or
> > hasValue being the function use to check whether it contained
> > anything rather than isNull. Either way, as I keep pointing
> > out, for it to be possible to reliably use it in generic code,
> > it needs its current semantics, and having it treat nullable
> > types differently makes it pointless to use it outside of
> > generic code. As such, having a Nullable/Optional type which
> > treats pointers differently just makes no sense.
> >
> > But if you want that, as I understand it, you can find at least
> > one library on code.dlang.org that has defined its own Optional
> > type which works that way.
> >
> > - Jonathan M Davis
>
> I'm not arguing that Optional isn't a useful type, but if you are
> going to fix the problems with deprecating the "alias this get;"
> then you are going to be breaking just as much code. You might as
> well deprecate the entire class and add one that is called
> Optional. And you feel such a class called Nullable that does
> what the name suggestions isn't useful. Then don't readd the type
> once it has been deprecated and removed.

Plenty of code uses Nullable without using the alias and would not be broken
by the alias being removed, but it's not a sure thing that the alias is
going to be deprecated anyway.

- Jonathan M Davis





More information about the Digitalmars-d mailing list