On Sun, 27 Sep 2009 03:01:48 +0400, Walter Bright <[email protected]> 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();

Reply via email to