array !is null fails

BCS BCS at pathlink.com
Tue Feb 13 09:53:47 PST 2007


Frits van Bommel wrote:
> BCS wrote:
> 
>> Reply to Jarrett,
>>
>>> "BCS" <ao at pathlink.com> wrote in message
>>> news:ce0a334373d48c91d12a1b9c0ec at news.digitalmars.com...
>>>
>>>> What good is the (array !is null) if it doesn't tell you when the
>>>> pointer is null?
>>>>
>>> Well if you want to see if the pointer is null then use "if(array.ptr
>>> is null)".  Though I'll agree with you that the discontinuity between
>>> zero-length null pointer arrays and more-than-zero-length null pointer
>>> arrays is a bit odd.
>>>
>> What else could be null? I don't see anything else that it could mean 
>> other than "is the pointer null".
> 
> 
> 'null', when interpreted as an array, is an _empty_ array with the 
> pointer being null.
> 
> This allows it to be a reasonable default initializer for dynamic 
> arrays, and means (arr == null) checks whether the array is empty.

Ok, I see that. But aren't the vast majority of comparisons ageist null 
asking "Is this readable?" That is the meaning I would expect. Then 
again it does bring in a corner case (length checked iff ptr!=null).

It's quite a bother though.

void fn(char[] c)
{

	//works untill c.ptr == null && c.length != 0

	assert(c !is null);
	writef("%s\n", c);
}


More information about the Digitalmars-d-learn mailing list