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();