Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #10393

Re: for :each style question

From Eric Sosman <esosman@ieee-dot-org.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: for :each style question
Date 2011-11-30 21:35 -0500
Organization A noiseless patient Spider
Message-ID <jb6p6j$7q5$1@dont-email.me> (permalink)
References <30fdd7tlkkejm29ufduhc9nnfk7uu3c6h0@4ax.com>

Show all headers | View raw


On 11/30/2011 6:32 PM, Roedy Green wrote:
> In a for:each loop, sometimes you want to treat the first and or last
> element specially.
>
> The obvious way to handle is to revert to a for int i= loop and check
> for special values of i.
>
> You can keep the for:each style if you have a boolean first= true that
> you set false to detect the first.
>
> I don't know of an equivalent way to detect the last.
>
> In the olden days I would have handled the first and last cases
> outside the loop, with the loop running over the middle elements. You
> can't do that with for:each.
>
> What do you consider the best style to deal with this?

     I once taught a student whose DO loops (this was FORTRAN) always
iterated from 1 through N, never from 2 through N or 1 through N-1.
Paraphrasing into zero-based Java, he'd write something like

	for (int i = 0; i < array.length; ++i) {
	    if (i == 0) continue;
	    if (i == array.length - 1) continue;
	    massage(array[i-1], array[i], array[i+1]);
	}

     I was unable to break him of this habit, and eventually formed
the opinion that he had learned The One True Way to write a loop,
and Nothing On Earth would persuade him to write it differently.

     That's the wrong way to think about a tool.

     The for:each form is a convenience, a prepackaged solution to
a common problem.  Do not expect it to be the answer for all kinds
of iteration.  for:each is Java's feeble imitation of (mapc); don't
push it beyond its built-in limits.  There are lots of other looping
forms available; use them when they suit.

     (For those who don't know what (mapc) means, see the current
thread "java developers" and give special attention to Patricia
Shanahan's contribution.)

-- 
Eric Sosman
esosman@ieee-dot-org.invalid

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

for :each style question Roedy Green <see_website@mindprod.com.invalid> - 2011-11-30 15:32 -0800
  Re: for :each style question Arne Vajhøj <arne@vajhoej.dk> - 2011-11-30 19:28 -0500
    Re: for :each style question Chris Riesbeck <Chris.Riesbeck@gmail.com> - 2011-12-05 14:28 -0600
  Re: for :each style question Knute Johnson <nospam@knutejohnson.com> - 2011-11-30 16:49 -0800
    Re: for :each style question Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-11-30 18:23 -0800
      Re: for :each style question Wanja Gayk <brixomatic@yahoo.com> - 2011-12-10 13:28 +0100
        Re: for :each style question Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-12-12 12:07 -0800
          Re: for :each style question Roedy Green <see_website@mindprod.com.invalid> - 2011-12-13 08:08 -0800
            Re: for :each style question Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-12-13 12:07 -0800
          Re: for :each style question Wanja Gayk <brixomatic@yahoo.com> - 2011-12-17 16:20 +0100
        Re: for :each style question Jim Janney <jjanney@shell.xmission.com> - 2011-12-14 14:31 -0700
          Re: for :each style question Lew <lewbloch@gmail.com> - 2011-12-14 16:53 -0800
            Re: for :each style question Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-12-15 16:16 -0800
          Re: for :each style question Wanja Gayk <brixomatic@yahoo.com> - 2011-12-17 12:31 +0100
  Re: for :each style question Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-11-30 21:35 -0500
  Re: for :each style question Lew <lewbloch@gmail.com> - 2011-11-30 19:12 -0800
  Re: for :each style question Robert Klemme <shortcutter@googlemail.com> - 2011-12-01 23:36 +0100
  Re: for :each style question Steven Simpson <ss@domain.invalid> - 2011-12-04 19:43 +0000

csiph-web