getNext

Mehrdad wfunction at hotmail.com
Mon Jul 9 02:14:08 PDT 2012


On Tuesday, 13 July 2010 at 12:39:19 UTC, Steven Schveighoffer 
wrote:
> On Mon, 12 Jul 2010 23:48:05 -0400, Andrei Alexandrescu 
> <SeeWebsiteForEmail at erdani.org> wrote:
>> We've been discussing simplified interfaces in this group but 
>> couldn't find one that satisfied all use cases.
>>
>> Consider this:
>>
>> T* getNext(R, T)(ref R range, ref T item);
>>
>> Semantics: <snip>
>
> Yes, yes, yes!
>
> -Steve

Oh dear. I can see this is getting ugly, pretty darn fast...

If you need to /pass/ TWO parameters by _reference_ AND return a 
pointer to a /templated/ method _just_ to get 1 element out of a 
range/array, the design is horribly wrong.

Imagine all the sorts of problems newcomers would have with 
learning this.

Not to mention the troubles /everyone/ would have with having 
this templated method a class. (How do you override it?)

Really, doing something simple should be simple.

I don't have any brilliant ideas, but one guess would be nullable 
types... if you can return a nullable value, your interface for 
an interface could just be:

	T?  next();

and that's it... it would return null if nothing is left. (The 
compiler can just set the null flag and ignore initializing the 
rest of the struct if the result is null.)


Anyway, whatever we do... _please_ don't make it something like 
that suggestion above >_< thanks


More information about the Digitalmars-d mailing list