< предудущая - содержание - следующая >
Управляющие операторы -- Циклы
В AppleScript есть, как и в любом другом языке, средства для многократного повторения тех или иных действий. Вариантов циклов — масса, на все случаи жизни.
В простейшем случае оператор цикла записывается вот так:
repeat
[оператор]...
end repeat
Здесь не указано, как компьютеру определить, что пора заканчивать повторения. Цикл будет бесконечным. Конечно, в реальной программе его надо будет рано или поздно прервать. Для этого есть оператор
exit -- "выход из цикла"
Чаще условие окончания цикла записывают непосредственно в его заголовке.
repeat while логическое выражение -- цикл "Пока"
[оператор]...
end repeat
или
repeat until логическое выражение -- цикл "До"
[оператор]
end repeat
Единственное отличие между этими циклами в том, что первый выполняется пока логическое выражение истинно, а второй — наоборот, заканчивается, когда оно станет истинным.
Зачастую, число повторов нам известно заранее, тогда можно сразу так и написать:
repeat целое times -- "повторить N раз"
[оператор]...
end repeat
А можно указать, что специальная переменная (параметр цикла) должна поочередно принять все значения из заданного диапазона. С каждым из них выполнится тело цикла. Сколько значений — столько и повторений.
repeat with переменная from целое to целое
[оператор]...
end repeat
Вообще-то, параметр может принимать и не все значения, то есть изменяться не на единицу, а на какую-либо другую (но обязательно целую!) величину — шаг:
repeat with переменная from целое to целое by целое
[оператор]...
end repeat
Наконец, мы можем заставить параметр перебирать элементы любого заданного списка.
repeat with переменная in список
[оператор]...
end repeat
Обратите внимание: при работе такого цикла параметр только ссылается на элемент списка. А для получения значения этого элемента нужно использовать операцию "contents" (содержимое), как в следующем примере.
tell application "Tex-Edit Plus"
tell window 1
set parNum to 1 -- счетчик абзацев
set y to paragraphs -- список всех абзацев текста
repeat with par in y
set paragraph parNum to (parNum as string) & " " & contents of par
-- перед абзацем вставляем его номер
set parNum to parNum + 1
end repeat
end tell
end tell
|