foreach

Sam S E asdf at mailinator.com
Sun Nov 23 09:04:21 PST 2008


Jarrett Billingsley Wrote:

> On Sun, Nov 23, 2008 at 10:48 AM, Sam S E <asdf at mailinator.com> wrote:
> > Jarrett Billingsley Wrote:
> >
> >> On Sat, Nov 22, 2008 at 11:40 PM, Sam S E <eisenstat.aa at sympatioco.ca> wrote:
> >> > Does foreach use delegates? Isn't that unnecessary overhead?
> >> > --Sam
> >>
> >> It does use delegates, for iterating over most types.  When iterating
> >> over arrays, the compiler turns it into a sort of for loop instead.
> >>
> >> Is it unnecessary overhead?  It's not always as fast as it could be,
> >> but unless someone can figure out some other way of implementing it,
> >> it's pretty much the best we can get.
> >>
> >> How about iterator objects, like in C++ or Java?  Are they unnecessary
> >> overhead?  ;)
> >
> > Why not just use a normal for loop; wouldn't it be almost as simple as token substitution? By 'most types,' do you mean associative arrays or am I forgetting something? As a mainly C(++) programmer, I don't use iterators when I don't need to. I don't even use classes when I don't need to.
> 
> How do you use a for loop to iterate over an associative array whose
> implementation is hidden, or a binary tree, or any arbitrary
> container, or a sequence or words in a file, or the zipped contents of
> two lists, or...
> 
> The point of foreach isn't performance, it's flexibility and
> abstraction.  As long as you can make an opApply or function which
> takes a delegate, you can use the foreach loop with it.  Not
> everything is an array.

Where are the docs on opApply?



More information about the Digitalmars-d mailing list