On Monday, February 27, 2012 22:45:06 Pedro Lacerda wrote: > So are a newly allocated array and a null one just the same thing? > > int[] a = [], b = null; > assert(a == b); > assert(a.length == b.length); > assert(a.ptr == a.ptr); > > My code made distinction between empty and invalid collections, this mean > that need to track the invalidation on another place?
In general, distinguishing between null and empty with arrays is a bad idea. There are a few cases where it can work (such as explicitly returning null from a function), but then you have to remember to use is and not ==. If you really want to distinguish between null and empty without having to worry about all of the little details, then you can use std.typecons.Nullable. - Jonathan M Davis