AppleScript

< предудущая - содержание - следующая >

Управляющие операторы -- Циклы

В 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


[Предыдущая][Содержание][Следующая]
[Титульная страница][Новости][Макинтош][Информатика и ИТ][Об авторе]
Hosted by uCoz