Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "Gosub", в содержании - "Flow of Control" - "Gosub", v1.0.47.06.

Ник переводчика: Archangel.

Gosub

Переходит к указанной метке и продолжает выполнение, пока не сталкивается с возвратом (Return).

Gosub, Label

Параметры

Label Имя произвольной метки, метки горячей клавиши или строки автозамены, к которой будет переход. Все команды, следующие в тексте скрипта после этой метки, будут выполняться, пока не встретится Return или Exit. "Return" заставляет скрипт перейти обратно, к первой команде после Gosub, и продолжить там выполнение. "Exit" завершает текущий поток.

Примечания

Как и с параметрами почти всех других команд, метка может быть ссылкой на переменную, типа %MyLabel%, когда название, сохраненное в переменной, используется как цель. Однако, производительность немного снижается, поскольку метка должна быть найдена каждый раз, а не только однажды, при первой загрузке скрипта. При использовании динамической метки, вроде %MyLabel%, будет показан диалог ошибки, если метка не будет существовать. Чтобы избежать этого, необходимо предварительно вызвать IsLabel(). Например:

if IsLabel(VarContainingLabelName)
    Gosub %VarContainingLabelName%

Команда Gosub полезна для простых подпрограмм общего назначения. В более сложных случаях подумайте об использовании функций (см. статью справки о функциях).

Примеры

Gosub, Label1
MsgBox, Подпрограмма Label1 осуществила возврат (завершена).
Return

Label1:
MsgBox, Подпрограмма Label1 выполняется
Return

Уберём первый возврат (Return). Сначала выполнится действие №2, возвратится к действию №1 и затем снова действие №2.

Gosub, Label1 
MsgBox, Действие №1

Label1:
MsgBox, Действие №2
Return

Другой пример:

Gosub, Label1
MsgBox, Это сообщение мы не увидим ; Так как в Label1 есть команда Exit.
Return

Label1:
MsgBox, Выход
Exit ; Которая завершает как данную подпрограмму Label1, так и вызвавшую её.

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.