== 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?