Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Applescript equivalent of "continue"?

I have a simple 'repeat with' in an AppleScript, and would like to move on to the next item in the "repeat" conditionally. Basically I'm looking for something similar to "continue" (or break?) in other languages.

I'm not well versed in AppleScript but I have found it useful a few times now.

like image 663
danieljimenez Avatar asked Jun 21 '09 20:06

danieljimenez


2 Answers

After searching for this exact problem, I found this book extract online. It exactly answers the question of how to skip the current iteration and jump straight to the next iteration of a repeat loop.

Applescript has exit repeat, which will completely end a loop, skipping all remaining iterations. This can be useful in an infinite loop, but isn't what we want in this case.

Apparently a continue-like feature does not exist in AppleScript, but here is a trick to simulate it:

set aList to {"1", "2", "3", "4", "5"}  repeat with anItem in aList -- # actual loop     repeat 1 times -- # fake loop         set value to item 1 of anItem          if value = "3" then exit repeat -- # simulated `continue`          display dialog value     end repeat end repeat 

This will display the dialogs for 1, 2, 4 and 5.

Here, you've created two loops: the outer loop is your actual loop, the inner loop is a loop that repeats only once. The exit repeat will exit the inner loop, continuing with the outer loop: exactly what we want!

Obviously, if you use this, you will lose the ability to do a normal exit repeat.

like image 91
Tom Lokhorst Avatar answered Sep 20 '22 23:09

Tom Lokhorst


set aList to {"1", "2", "3", "4", "5"}  repeat with anItem in aList -- # actual loop     try         set value to item 1 of anItem          if value = "3" then error 0 -- # simulated `continue`          log value     end try end repeat 

This will still give you the "exit repeat" possibillity

like image 30
Skeeve Avatar answered Sep 23 '22 23:09

Skeeve