Is the other-kind-of-null really necessary in Nullable and Variant?

Simen Kjaeraas simen.kjaras at gmail.com
Mon Apr 29 10:06:38 PDT 2013


On 2013-04-29, 18:02, Idan Arye wrote:

> On Monday, 29 April 2013 at 15:39:47 UTC, Simen Kjaeraas wrote:
>> On 2013-04-29, 17:34, Idan Arye wrote:
>>
>>> On Monday, 29 April 2013 at 12:23:04 UTC, deadalnix wrote:
>>>> On Sunday, 28 April 2013 at 16:33:19 UTC, Idan Arye wrote:
>>>>> When you use `std.typecons.Nullable` with a type that already accept  
>>>>> `null` values, you get two types of nulls - the `Nullable`'s null  
>>>>> state the the regular type's `null`:
>>>>>
>>>>>   Nullable!string a;
>>>>>   writeln(a.isNull()); //prints "true"
>>>>>   a = null;
>>>>>   writeln(a.isNull()); //prints "false"
>>>>>   a.nullify();
>>>>>   writeln(a.isNull()); //prints "true"
>>>>>
>>>>
>>>> All types should be non nullable. Problem solved.
>>>
>>> *All* types? Even object references and pointers?
>>
>> That would be nice, yes.
>
> And what would they be initialized to? When you write:
>      Object obj;
> what will `obj` refer to?

It won't. That would be a compile-time error:
'Variable obj needs an initializer'.

We have some of this already in @disable this(). However, a true
non-nullable reference is, I believe, not possible in D today.

-- 
Simen


More information about the Digitalmars-d mailing list