Proposal : allocations made easier with non nullable types.

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Feb 10 08:41:25 PST 2009


Denis Koroskin wrote:
> On Tue, 10 Feb 2009 17:40:36 +0300, Andrei Alexandrescu 
> <SeeWebsiteForEmail at erdani.org> wrote:
> 
>> Denis Koroskin wrote:
>>> On Tue, 10 Feb 2009 17:11:06 +0300, Andrei Alexandrescu 
>>> <SeeWebsiteForEmail at erdani.org> wrote:
>>>
>>>> Nick Sabalausky wrote:
>>>>> "Daniel Keep" <daniel.keep.lists at gmail.com> wrote in message 
>>>>> news:gmpd71$8uj$1 at 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



More information about the Digitalmars-d mailing list