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