On Monday, October 21, 2013 11:58:07 Regan Heath wrote: > If what you say is true then slices would and could never be null... If > that were the case I would stop complaining and simply "box" them with > Nullable when I wanted a reference type. But, D's strings/slices are some > kind of mutant half reference half value type, and that's the underlying > problem here.
Yeah, dynamic arrays in D are just plain weird. They're halfway between reference types and value types, and it definitely causes confusion, and it totally screws with null (which definitely sucks). But they mostly work really well the way that they are, and in general, the way that slices work works really well. So, I don't know if what we have is ultimately the right design or not. I definitely don't like how null works for arrays though. Given how they work, we probably would have been better off if they couldn't be null. The ptr obviously could be null, but the array itself arguably shouldn't be able to be null. If we did that, then it would be clear that null wouldn't work with arrays, and no one would try. It would still kind of suck, since you wouldn't have null, but then at least it would be clear that null wouldn't work with arrays instead of having a situation where it kind of does and kind of doesn't. - Jonathan M Davis
