После поиска этой точной проблемы я нашел это book extract онлайн. Он точно отвечает на вопрос о том, как пропустить текущую итерацию и перейти прямо к следующей итерации цикла repeat
.
Applescript имеет exit repeat
, который полностью завершит цикл, пропуская все оставшиеся итерации. Это может быть полезно в бесконечном цикле, но это не то, что мы хотим в этом случае.
Видимо continue
-как функция не существует в AppleScript, но здесь есть уловка, чтобы имитировать его:
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
Это будет отображать диалоговые окна для 1, 2, 4 и 5.
Здесь вы создали две петли: внешний цикл - это ваш фактический цикл, внутренний цикл - это цикл, который повторяется только один раз. exit repeat
выйдет из внутреннего цикла, продолжая внешний цикл: именно то, что мы хотим!
Очевидно, что если вы используете это, вы потеряете возможность сделать нормальный exit repeat
.
Код, указанный выше, не будет компилироваться, потому что комментарии в applescript - не # – alexy13
В applescript 2.0 знак # также разрешен для комментариев: https://developer.apple.com/library/mac/documentation/applescript/ концепт/applescriptlangguide/conceptual/ASLR_lexical_conventions.html # // apple_ref/doc/uid/TP40000983-CH214-SW8 – Joakim
Код будет компилироваться, потому что «-» предшествует всем «#», а «-» всегда отмечал комментарий в AppleScript. –