arrays: if(null == [ ])
Alex Rønne Petersen
xtzgzorex at gmail.com
Mon May 14 10:41:55 PDT 2012
On 14-05-2012 19:16, Gor Gyolchanyan wrote:
> At least we could make an empty string a null array of characters for
> consistency. How many times did anyone use the feature of string
> literals being null-terminated?
>
> On Mon, May 14, 2012 at 8:56 PM, Jonathan M Davis <jmdavisProg at gmx.com
> <mailto:jmdavisProg at gmx.com>> wrote:
>
> On Monday, May 14, 2012 14:08:17 Gor Gyolchanyan wrote:
> > Hi! I have a small question:
> > Is the test for a null array equivalent to a test for zero-length
> array?
> > This is particularly interesting for strings.
> > For instance, I could return an empty string from a toString-like
> function
> > and the empty string would be printed, but If I returned a null
> string,
> > that would indicate, that there is no string representation and
> it would
> > cause some default string to be printed.
> > So, the question is, if a null array is any different from an
> empty array?
>
> A null array is equal to an empty array.
>
> assert(null == []);
> assert(null == "");
>
> It's when you use is that things change. An array "is null" only if
> it's ptr
> property is null, which is true only for uninitialized arrays and []
> (the
> compiler doesn't bother allocating memory for [], so it's basically
> the same
> as null). However, since "" is a string literal, it _does_ have memory
> allocated to it, so
>
> assert([] is null);
> assert("" !is null);
>
> So, it all comes down to the ptr property. An array is considered to
> have a
> length of 0 if its length property is 0 (which null arrays do). It's
> only
> considered to be null if its ptr property is null. == uses the length
> property, ignoring the ptr property as long as the lengths are equal
> (and
> checking each of the elements refered to by the ptr property if the
> lengths
> aren't equal), whereas is specifically checks whether the ptr
> properties of the
> two arrays are equal.
>
> Personally, I think that conflating null and empty like this is
> atrocious, but
> that's how the language works, and we're stuck with it.
>
> - Jonathan M Davis
>
>
>
>
> --
> Bye,
> Gor Gyolchanyan.
See my other post in reply to your original thread.
--
- Alex
More information about the Digitalmars-d
mailing list