== Quote from Andrei Alexandrescu (seewebsiteforem...@erdani.org)'s article
> Jarrett Billingsley wrote:
> > On Sun, Jan 18, 2009 at 1:00 PM, dsimcha <dsim...@yahoo.com> wrote:
> >> Nice.  Glad to see that this is documented somewhere so I can start 
> >> playing with
> >> it.  One thing, though:  In my dstats library, I have a custom hash table
> >> implementation that's used very heavily in my information theory module.  
> >> (I have
> >> my reasons for using a custom hash table instead of the builtin, but 
> >> they're
> >> beyond the scope of this post.)  Right now, the hash table uses opApply.  
> >> Now
that
> >> I realize how horribly slow opApply is, I'd like to port this to ranges.
However,
> >> I need to be able to iterate over either key, value pairs or just values.  
> >> Is
> >> there any way to make this work with ranges?
> >>
> >
> > You could handle key or value iteration by using a proxy struct type
> > that follows the range protocol, and have your hash table return one
> > of those structs from methods such as "keysIter" or "valuesIter".  But
> > unless I'm mistaken, D2 still doesn't support returning tuples, so you
> > still can't have keys _and_ values at the same time.  (Unless you're
> > content with using a Pair or something.)
> Returning a std.typecons.Tuple is entirely possible.
> Andrei

So there's no way to do this without requiring any extra boilerplate on the
caller's end, i.e. as cleanly (from the caller's perspective) as opApply?

Reply via email to