Ссылка обработчика
Эта глава обеспечивает ссылку для обработчиков, определенных и представленных в приблизительно Обработчиках. Это описывает типы параметров, которые можно использовать с обработчиками и как Вы вызываете их. Это также описывает continue
и return
операторы, которые Вы используете для управления потоком выполнения в обработчиках.
A continue
оператор заставляет AppleScript вызывать обработчик с тем же именем в родителе текущего обработчика. Если нет такого обработчика в родителе, AppleScript ищет родительскую цепочку, заканчивающуюся текущим приложением.
A continue
оператор походит на вызов обработчика, в котором после того, как выполнение завершается в новом расположении, это возобновляется с оператором после continue
оператор.
Синтаксис
|
Заполнители
- handlerName
Требуемый идентификатор, указывающий имя текущего обработчика (который является также именем обработчика, который можно продолжать выполнение).
- parameterList
Список параметров, которые будут переданы handlerName.
Список должен следовать за тем же форматом как определения параметра в определении обработчика для команды. Для обработчиков с маркированными параметрами это означает, что метки параметра должны соответствовать тем в определении обработчика. Для обработчиков с позиционными параметрами параметры должны появиться в правильном порядке.
Можно перечислить переменные параметра, указанные в исходной команде (и таким образом исходные значения), или можно перечислить значения, которые могут отличаться от тех из исходных переменных.
Примеры
Можно записать обработчик, переопределяющий команду AppleScript, но использующий a continue
оператор для передачи управления на команде AppleScript при желании:
on beep numTimes |
set x to display dialog "Start beeping?" buttons {"Yes", "No"} |
if button returned of x is "Yes" then ¬ |
continue beep numTimes -- Let AppleScript handle the beep. |
-- In this example, nothing to do after returning from the continue. |
end beep |
beep 3 --result: local beep handler invoked; shows dialog before beeping |
tell my parent to beep 3 -- result: AppleScript beep command invoked |
Когда AppleScript встречается с оператором beep 3
, это вызывает локальную переменную beep
обработчик, выводящий на экран диалоговое окно. Если пользователь нажимает кнопку Да, обработчик использует a continue
оператор для передачи beep
команда к родителю сценария (AppleScript), обрабатывающий команду путем подачи звукового сигнала. Если пользователь нажимает No, он не продолжается beep
команду и никакой звук слышат.
Заключительный оператор, tell my parent to beep 3
, показывает, как непосредственно вызвать AppleScript beep
команда, а не локальный обработчик.
Для примера, использующего a continue
оператор для выхода из обработчика сценария и возврата управляет к значению по умолчанию приложения quit
обработчик, посмотрите Обработчики выхода.
Для дополнительных примеров посмотрите Используя продолжать Оператор в Объектах сценария.
A return
оператор выходит из обработчика и дополнительно возвращает указанное значение. Выполнение продолжается в месте в сценарии, где вызвали обработчик.
Синтаксис
|
Заполнители
- выражение
Представляет значение для возврата.
Примеры
Следующее утверждение, вставленное в организацию обработчика, возвращает целое число 2
:
return 2 -- returns integer value 2 |
Если Вы включаете a return
оператор без выражения, AppleScript сразу выходит из обработчика, и никакое значение не возвращается:
return -- no value returned |
Посмотрите другие разделы всюду по Ссылке Обработчика для большего количества примеров сценариев, использующих return
оператор.
Обсуждение
Если обработчик не включает a return
оператор, AppleScript возвращает значение, возвращенное последним оператором. Если последний оператор не возвращает значение, AppleScript ничего не возвращает.
Когда AppleScript закончил выполнять обработчик (т.е. когда он выполняет a return
оператор или последний оператор в обработчике), это передает управление к месту в сценарии сразу после места, где вызвали обработчик. Если вызов обработчика является частью выражения, AppleScript использует значение, возвращенное обработчиком для оценки выражения.
Это часто считают хорошей практикой программирования для имения всего один return
оператор и определяет местоположение его в конце обработчика. Выполнение так может предоставить следующие преимущества:
Сценарий проще понять.
Сценарий проще отладить.
Можно поместить код очистки в одно место и удостовериться, что это выполняется.
В некоторых случаях, однако, может иметь больше смысла использовать многократный return
операторы. Например, minimumValue
обработчик в Синтаксисе Обработчика (Позиционные Параметры) является простым сценарием, использующим два return
операторы.
Для соответствующей информации посмотрите Обработку ошибок AppleScript.
Обработчик является набором операторов, которые могут быть вызваны по имени. В этом разделе описываются синтаксис для обработчиков то использование маркированные параметры.
Маркированные параметры идентифицируются их метками и могут быть перечислены в любом порядке.
Синтаксис
( |
Заполнители
- handlerName
Идентификатор, называющий обработчик.
- directParamName
Идентификатор для прямой переменной параметра. Если это включено, directParamName должен быть сразу перечислен после названия команды. Слово
of
илиin
прежде чем directParamName требуется в определяемых пользователем обработчиках, но дополнительный в определенных с помощью терминологии обработчиках (например, определенные приложениями).Если определяемый пользователем обработчик включает прямой параметр, обработчик должен также включать по крайней мере один переменный параметр.
- ASLabel
AppleScript-определенная метка. Доступные метки:
about
,above
,against
,apart from
,around
,aside from
,at
,below
,beneath
,beside
,between
,by
,for
,from
,instead of
,into
,on
,onto
,out of
,over
,since
,thru
(илиthrough
),under
. Это единственные метки, которые могут использоваться без специальной меткиgiven
. Каждая метка должна быть уникальной среди меток для обработчика (т.е. Вы не можете использовать ту же метку больше чем для одного параметра).- userLabel
Идентификатор для определяемой пользователем метки, связанной с определяемым пользователем параметром. Каждая метка должна быть уникальной.
Первая userLabel-userParamName пара должна следовать за словом
given
; любые дополнительные пары разделяются запятыми.- userParamName
Идентификатор для переменной параметра.
- оператор
Любой оператор AppleScript. Эти операторы могут включать определения
script
объекты, каждый из который, как любойscript
возразите, может содержать обработчики и другойscript
объекты. Однако Вы не можете объявить другой обработчик в обработчике, кроме в ascript
объект.Обработчики часто содержат оператор возврата.
Примеры
Для примеров и связанной концептуальной информации, посмотрите Обработчики с Маркированными Параметрами.
Обсуждение
Обработчик, записанный для ответа на команду приложения (как те в Обработчиках в Приложениях Сценария), не должен включать все возможные параметры, определенные для той команды. Например, приложение могло бы определить команду с помощью максимум пяти возможных параметров, но Вы могли определить обработчик для той команды с только двумя из параметров.
Если сценарий вызывает обработчик с большим количеством параметров, чем указано в определении обработчика, дополнительные параметры проигнорированы.
В этом разделе описываются синтаксис для вызова обработчика с маркированными параметрами.
Синтаксис
handlerName ¬ |
Заполнители
- handlerName
Идентификатор, называющий обработчик.
- directParam
Любое допустимое выражение. Выражение для прямого параметра должно быть перечислено сначала, если это включено вообще.
- ASLabel
Одна из следующих AppleScript-определенных меток использовала в определении обработчика:
about
,above
,against
,apart from,
around
,aside from
,at
,below
,beneath
,beside
,between
,by
,for
,from
,instead of
,into
,on
,onto
,out of
,over
,since
,thru
(илиthrough
),under
.- paramValue
Значение параметра, который может быть любым допустимым выражением.
- labelForTrueParam
Метка для булева параметра, значение которого
true
. Вы используете эту форму вwith
пункты. Поскольку значениеtrue
подразумевается словомwith
, Вы обеспечиваете только метку, не значение. Для примера посмотритеfindNumbers
обработчик в Обработчиках с Маркированными Параметрами.- labelForFalseParam
Метка для булева параметра, значение которого
false
. Вы используете эту форму вwithout
пункты. Поскольку значениеfalse
подразумевается словомwithout
, Вы обеспечиваете только метку, не значение.- paramLabel
Любая метка параметра использовала в определении обработчика, который не является среди меток для ASLabel. Необходимо использовать специальную метку
given
указать эти параметры. Для примера посмотритеfindNumbers
обработчик ниже.
Примеры
Для примеров посмотрите Обработчики с Маркированными Параметрами.
Обсуждение
При вызове обработчика с маркированными параметрами Вы предоставляете следующее:
Имя обработчика.
Значение для прямого параметра, если обработчик имеет тот. Это должно непосредственно следовать за именем обработчика.
Одна пара значения метки для каждой AppleScript-определенной метки и параметра определяется для обработчика.
Одна пара значения метки для каждой определяемой пользователем метки и параметра определила для обработчика, который не является булевым значением.
Первой паре предшествует слово
given
; запятая предшествует каждой дополнительной паре. Порядок пар не должен соответствовать порядок в определении обработчика.Для каждой определяемой пользователем метки и параметра, определенного для обработчика, который является булевым значением, Вы можете также:
Предоставьте метку, сопровождаемую булевым выражением (как с небулевыми параметрами); например:
given rounding:true
Используйте комбинацию
with
иwithout
пункты, как показано в следующих примерах:with rounding, smoothing and curling
with rounding without smoothing, curling
Обработчик является набором операторов, которые могут быть вызваны по имени. В этом разделе описываются синтаксис для обработчиков, использующих позиционные параметры.
Синтаксис
|
Заполнители
- handlerName
Идентификатор, называющий обработчик.
- userParamName
Идентификатор для определяемой пользователем переменной параметра.
- оператор
Любой оператор AppleScript, включая глобальные или локальные объявления переменных. Для получения информации об объеме локальных и глобальных переменных посмотрите Объем Переменных и Свойств.
Примеры
Для примеров и связанной концептуальной информации, посмотрите Обработчики с Позиционными Параметрами.
Требование обработчика с позиционными параметрами должно перечислить параметры в том же порядке, как они указаны в определении обработчика.
Синтаксис
handlerName |
Заполнители
- handlerName
Идентификатор, называющий обработчик.
- paramValue
Значение параметра, который может быть любым допустимым выражением. Если существует два или больше параметра, они должны быть перечислены в том же порядке, в котором они были указаны в определении обработчика.
Примеры
Для примеров посмотрите Обработчики с Позиционными Параметрами
Обсуждение
При вызове обработчика с позиционными параметрами Вы предоставляете следующее:
Обработчик является набором операторов, которые могут быть вызваны по имени. В этом разделе описываются синтаксис для обработчиков, то использование чередовало параметры.
Синтаксис
|
Заполнители
- handlerNamePart, namePart
Идентификатор, что, объединенный с другими частями, формирует имя обработчика.
- userParamName
Идентификатор для определяемой пользователем переменной параметра.
- оператор
Любой оператор AppleScript, включая глобальные или локальные объявления переменных. Для получения информации об объеме локальных и глобальных переменных посмотрите Объем Переменных и Свойств.
Примеры
Для примеров и связанной концептуальной информации, посмотрите Обработчики с Чередованными Параметрами.
Требование обработчика с чередованными параметрами должно перечислить параметры в том же порядке, как они указаны в определении обработчика.
Синтаксис
( tell scriptObject to | scriptObject's | my ) handlerNamePart:paramValue [ namePart:paramValue ]...] |
Заполнители
- scriptObject
Объект сценария для направления обработчика вызывает к, который может быть любым допустимым выражением.
- handlerNamePart, namePart
Идентификатор, называющий обработчик.
- paramValue
Значение параметра, который может быть любым допустимым выражением. Если существует два или больше параметра, они должны быть перечислены в том же порядке, в котором они были указаны в определении обработчика.
Примеры
Для примеров посмотрите Обработчики с Позиционными Параметрами
Обсуждение
При вызове обработчика с позиционными параметрами Вы предоставляете следующее:
Объект сценария для направления обработчика вызывает к, любое использование
tell
сценарийto
, сценарий's
, илиmy
, эквивалентныйtell me to
.Первая заглавная роль обработчика.
Значение для первого параметра.
Для каждого дополнительного параметра Вы также перечисляете следующее:
Следующая заглавная роль, сопровождаемая двоеточием и значением для того параметра. Значение может быть любым допустимым выражением.