On Tue, 10 Feb 2009 19:41:25 +0300, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:

Denis Koroskin wrote:
On Tue, 10 Feb 2009 17:40:36 +0300, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:

Denis Koroskin wrote:
On Tue, 10 Feb 2009 17:11:06 +0300, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:

Nick Sabalausky wrote:
"Daniel Keep" <daniel.keep.li...@gmail.com> wrote in message news:gmpd71$8u...@digitalmars.com...
Alex Burton wrote:
I think it makes no sense to have nullable pointers in a high level language like D.
Oh, and how do you intend to make linked lists?  Or trees?  Or any
non-trivial data structure?

 Null Object Pattern:
--------------
class LinkedListNode(T)
{
    LinkedListNode!(T) next;
     private static LinkedListNode!(T) _end;
    static LinkedListNode!(T) end() {
        return _end;
    }
    static this() {
         _end = new LinkedListNode!(T);
    }
}
--------------


What is "next" for the _end node?

Andrei
 Perhaps, 'this' (i.e. itself).

Then there's going to be quite a few infinite loops out there...

Andrei
 No, you just need to have a private ctor:

I meant that code that fails to check for _end when iterating through a list will never stop.

Andrei

No, error like that will be detected at compile time (comparison against null is disallowed for non-nullable reference).

Reply via email to