Nullable or Optional? Or something else?

Leandro Lucarella llucax at gmail.com
Thu Sep 3 08:50:55 PDT 2009


Steven Schveighoffer, el  3 de septiembre a las 11:22 me escribiste:
> On Thu, 03 Sep 2009 10:40:13 -0400, Leandro Lucarella <llucax at gmail.com> wrote:
> 
> >Andrei Alexandrescu, el  2 de septiembre a las 14:39 me escribiste:
> >>I plan to add a Nullable struct to Phobos (akin to C#'s Nullable, Boost's Optional).
> >>
> >>Apparently a good design is to define Optional!T with a minimum of member functions (ideally none) and have it use the "alias this" feature to masquerade as 
> >>a
> >>T. That way Optional!T looks and feels much like a T, except that it supports a function
> >>
> >>bool isNull(T)(Optional!T value);
> >>
> >>Am I on the right track? If so, what is the name you'd prefer for this artifact?
> >
> >Maybe this is a very silly question, but what is exactly the difference
> >between Optional!T o/isNull(o) and T* o/o is null?
> 
> The difference is you don't have to store the T somewhere else.

That doesn't seems like a big problem having a GC.

> That is, an Optional!T contains both the value if it is not null AND
> whether it is null or not.  With a T*, the value is stored elsewhere,
> and you may have aliasing problems.

Ok, this seems like a reasonable point. So Optional!T is a value type,
right?

-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
CONDUCTOR BORRACHO CASI PROVOCA UNA TRAGEDIA: BATMAN UNICO TESTIGO
	-- Crónica TV



More information about the Digitalmars-d mailing list