On Wednesday, 3 October 2012 at 08:11:32 UTC, Franciszek Czekała
wrote:
Agreed. Nullable types are a feature not a bug. There is no
need to change it. Bugs occur when you do not know the language
rules and make assumptions instead. This can happen whith any
language and any rules. As to an example use of nullable
references: consider a board game (for example chess). The
boards has cells which can be empty or occupied. Model this
with an array of class objects representing pieces. null
reference means a cell is not occupied. If you want to remove a
piece from the board assign null to it and GC will take care of
the rest. Now, doing this with full objects representing empty
cells would require needless work to define such "null" objects
and would be wasteful of memory (typically boards are sparsely
populated). Now imagine a really big board and every cell
holding references to useless objects simulating null
references. It would not make sense. Saying that null
references are evil is just propaganda. Let's keep D a sane
language.
There is a related question at stackoverflow:
http://stackoverflow.com/questions/693325/non-nullable-reference-types
As you can see the "nullable references are great" guy has been
voted down.
I've written like 5k lines of code in D and never felt the need
of using null. C++'s std::shared_ptr has the same issue, but at
least it is called pointer.