Spec#, nullables and more
Walter Bright
newshound2 at digitalmars.com
Fri Nov 5 16:41:25 PDT 2010
Denis Koroskin wrote:
> On Fri, 05 Nov 2010 23:44:58 +0300, Walter Bright
> <newshound2 at digitalmars.com> wrote:
>>
>> To eliminate null pointers is the same as shooting the canary in your
>> coal mine because its twitter annoys you.
>
> I'm tired of pointing out that NO ONE is talking about eliminating null
> pointers, but rather extending an existing type system to support
> non-nulls. Your hate towards non-nullables comes from misunderstanding
> of the concept.
Consider non-nullable type T:
T[] a = new T[4];
... time goes by ...
T[1] = foo;
T[3] = bar;
... more time goes by ...
bar(T[2]);
In other words, I create an array that I mean to fill in later, because I don't
have meaningful data for it in advance. What do I use to default initialize it
with non-nullable data? And once I do that, should bar(T[2]) be an error? How
would I detect the error?
In general, for a non-nullable type, how would I mark an instance as not having
meaningful data?
For example, an int is a non-nullable type. But there's no int value that means
"no meaningful value", and this can hide an awful lot of bugs.
I'm not sure at all that non-nullable types do more than make easy to find bugs
much, much harder to find.
More information about the Digitalmars-d
mailing list