On Wed, 22 May 2013 02:10:52 +0200 "Diggory" <[email protected]> wrote:
> On Tuesday, 21 May 2013 at 22:24:06 UTC, Nick Sabalausky wrote: > > On Mon, 06 May 2013 11:14:56 +0200 > > "Kagamin" <[email protected]> wrote: > > > >> On Monday, 29 April 2013 at 09:38:10 UTC, David wrote: > >> > Null blows up your code, "" doesn't. > >> > >> There's no difference between null and empty string in D. > >> > > > > That's not true: > > > > assert("" !is null); // Passes > > > > Or did I misunderstand what you meant? > > Strings are slices which are a pointer and a length. I think a > slice compares equal to null only if the pointer part is null. > However, a slice with a null pointer and a length of zero is > still a valid empty slice, which is slightly odd behaviour > compared to other languages... > > An empty string literal initialises the pointer to non-null > because string literals are null terminated, so the memory block > actually has a length of one, even though the slice has length > zero. Right, exactly. In other words, there *is* a difference between null and empty string in D (even though it's sometimes a clouded issue since '==' counts them as equal).
