Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Enumerable.each() - why?
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  4 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
greenie2600  
View profile  
 More options Jun 30 2008, 8:10 pm
From: greenie2600 <greenie2...@yahoo.com>
Date: Mon, 30 Jun 2008 17:10:51 -0700 (PDT)
Local: Mon, Jun 30 2008 8:10 pm
Subject: Enumerable.each() - why?
I often see people using fancy library methods, like Prototype's
Enumerable.each(), to
loop over arrays.

What's the point of this? Why not just do a standard for loop, like
so:

for ( var i = 0; i < myArray.length; i++ ) {
    // ...

}

It seems like it'd be faster, since it's working closer to the bare
metal. Am I wrong about this, or is there some other nuance I'm
missing?

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ryan Gahl  
View profile  
 More options Jun 30 2008, 8:27 pm
From: "Ryan Gahl" <ryan.g...@gmail.com>
Date: Mon, 30 Jun 2008 19:27:26 -0500
Local: Mon, Jun 30 2008 8:27 pm
Subject: Re: [Rails-spinoffs] Enumerable.each() - why?

In some cases, yes, it's pure sugar.

In some cases, yes, you may notice a speed difference. But only if you're
looping through a megaton of items and doing a supermegaton of processing.

In most case, it's effect on performance is not worth mentioning.

The main point of it, though, is it's a nice clean way to iterate a
collection AND have a new local scope for each iteration of the loop. The
closure provided by .each(fn(item, index)) comes in very handy in many
cases.

Plus:

for (var i = 0; i < blah.length; i++) {
var item = blah[i];
doSomething(item);

}

is more verbose than:

blah.each(doSomething);

And finally, you're right that .each is one of the lesser value-add methods
in Enumerable. Certainly .invoke, .collect, etc... are doing more work. But
personally I like the "predicate and delegate" patterns - also prevalent in
C# and Java (via Generics) - that Enumerable provides with it methods,
including each.

I've been bitten several times with a for loop that didn't quite work as
expected because I, or someone, forgot about the absence of block level
scoping in javascript.

--
Ryan Gahl
Manager, Senior Software Engineer
Nth Penguin, LLC
http://www.nthpenguin.com
--
WebWidgetry.com / MashupStudio.com
Future Home of the World's First Complete Web Platform
--
Inquire: 1-920-574-2218
Blog: http://www.someElement.com
LinkedIn Profile: http://www.linkedin.com/in/ryangahl

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
greenie2600  
View profile  
 More options Jun 30 2008, 8:33 pm
From: greenie2600 <greenie2...@yahoo.com>
Date: Mon, 30 Jun 2008 17:33:08 -0700 (PDT)
Local: Mon, Jun 30 2008 8:33 pm
Subject: Re: Enumerable.each() - why?
Ah. The bit about creating a clean scope for each iteration makes
sense. I've been simulating that by resetting my "block-level"
variables to null at the top of the loop.

Thanks! I'll keep this in mind.

On Jun 30, 8:27 pm, "Ryan Gahl" <ryan.g...@gmail.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Frederick Polgardy  
View profile  
 More options Jun 30 2008, 9:33 pm
From: "Frederick Polgardy" <f...@polgardy.com>
Date: Mon, 30 Jun 2008 20:33:56 -0500
Local: Mon, Jun 30 2008 9:33 pm
Subject: Re: [Rails-spinoffs] Re: Enumerable.each() - why?

I don't know if I could ever go back to programming in a language without
closures anymore. :-)  That used to bite me so many times in JS, mindlessly
assuming that a block has a closure.

-Fred

On Mon, Jun 30, 2008 at 7:33 PM, greenie2600 <greenie2...@yahoo.com> wrote:

> Ah. The bit about creating a clean scope for each iteration makes
> sense. I've been simulating that by resetting my "block-level"
> variables to null at the top of the loop.

> Thanks! I'll keep this in mind.

--
Science answers questions; philosophy questions answers.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »