Login  Register

Re: continue equivalent on macro language (for loop control)

Posted by lechristophe on Sep 29, 2013; 11:24am
URL: http://imagej.273.s1.nabble.com/Re-continue-equivalent-on-macro-language-for-loop-control-tp5004972p5004973.html

Hi Carnë and Wayne,

Just a side note for Carnë and other macro-writing listers:  it's possible
to use functions for this, using a conditional return when the condition
isn't met. Functions usually make your code much easier to manipulate.

so that would be (it's just quick and dirty pseudocode, there must be some
syntax errors in it):

macro "my_macro" {
 for (i = 0; i < lengthOf(file_list); i++) {
  treatFile(file_list[i]);
 }
}


function treatFile(path){
 // check if file exists before opening. Skip if it's no longer there
 if(File.exists(path) {
  file.open(path);
  }
 else {
  print ("File disappeared. Skipping");
  return;
 }
  // Do very smart image analysis here
}


Cheers,

Christophe


On Sun, Sep 29, 2013 at 6:34 AM, Rasband, Wayne (NIH/NIMH) [E] <
[hidden email]> wrote:

> On Mar 15, 2011, at 6:13 PM, Carnë Draug wrote:
>
> > Hi everyone,
> >
> > is there any equivalent to 'continue' in a for loop in the macro
> > language? I'm inside a foor loop and want to skip to the next value in
> > the loop if a certain condition is not meet. Here's a bit of code
> > example
> >
> > // get list of files and options
> >
> > for (i = 0; i < lengthOf(file_list); i++) {
> >  // check if file exists before opening. Skip if it's no longer there
> >  if(File.exists(file_list[i]) {
> >    file.open(file_list[i]);
> >  } else {
> >    print ("File disappeared. Skipping");
> >    continue;
> >  }
> >  // Do very smart image analysis here
> > }
> >
> > I tried continue and it doesn't work. "next" also doesn't. Any help
> > would be appreciated.
>
> ImageJ 1.48d adds support for 'continue' and 'break' statements to the
> macro language.
>
> -wayne
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html