Null references redux

Denis Koroskin 2korden at gmail.com
Sat Sep 26 16:20:19 PDT 2009


On Sun, 27 Sep 2009 03:01:48 +0400, Walter Bright  
<newshound1 at digitalmars.com> wrote:

> Denis Koroskin wrote:
>> One more:
>>  T foo(bool someCondition)
>> {
>>     T? t;
>>     if (someCondition) t = someInitializer();
>>     // ...
>>      if (t.isNull) { // not initialized yet
>>         // ...
>>     }
>>      return enforce(t); // throws if t is not initialized yet, because  
>> foo *must* return a valid value by a contract
>> }
>
> It seems to me you've got null references there anyway?
>
> What would you do about:
>
>     T[] a;
>     a[i] = foo();
>
> where you want to have unused slots be null (or empty, or nothing)?

Easy:

T? foo(); // returns valid object or a null

T?[] a;
a[i] = foo();



More information about the Digitalmars-d mailing list