라벨

목차

Syntax and Usage

라벨은 코드 한 줄을 식별합니다. Goto의 목표나 서브루틴을 형성하는 데 사용할 수 있습니다. There are three kinds of label: normal named labels, hotkey labels and hotstring labels.

Normal labels consist of a name followed by a colon.

this_is_a_label:

Hotkey labels consist of a hotkey followed by double-colon.

^a::

Hotstring labels consist of a colon, zero or more options, another colon, an abbreviation and double-colon.

:*:btw::

Generally, aside from whitespace and comments, no other code can be written on the same line as a label. However:

이름: 라벨 이름은 대소문자를 구분하지 않으며, 스페이스나 탭 그리고 쉼표와 피신 문자 (`)를 제외하고 어떤 문자로도 구성할 수 있습니다. 그렇지만, 스타일 관례 때문에, 일반적으로 오직 기호와 숫자 그리고 밑줄 문자를 사용하는 편이 좋습니다 (예를 들어: MyListView, Menu_File_Open, and outer_loop). 라벨 이름은 전체 스크립트를 통해 유일해야 합니다.

예약된 이름은 없지만, 다음 이름은 사용하지 않기를 강력하게 권고합니다: On, Off, Toggle, AltTab, ShiftAltTab, AltTabAndMenu 그리고 AltTabMenuDismiss. 이런 값들은 Hotkey 명령어에 특별한 의미가 있습니다.

목표: 라벨의 목표는 실행 코드의 다음 줄입니다. 실행 코드에는 명령어, 할당, 표현식 그리고 블록이 담길 수 있지만, 지시어나 라벨, 핫키와 핫스트링은 안됩니다. 다음 예제에서, run_notepad#n는 모두 Run 라인을 가리킵니다:

run_notepad:
#n::
    Run Notepad
    return

실행: 지시어처럼, 라벨은 정상 실행 흐름에 도달하면 아무 효과도 없습니다. 다음 예제에서 메시지 박스는 두번 나타납니다 - 한 번은 Gosub에 의한 서브루틴의 실행 동안에, 그리고 다시 서브루틴이 반환된 후에 나타납니다:

gosub Label1

Label1:
MsgBox %A_ThisLabel%
return

서브루틴

서브루틴은 특정한 작업을 위해 호출할 수 있는 코드 일부입니다. 서브루틴의 실행은 라벨이 목표에서 시작해서 Return이나 Exit을 만날 때까지 계속됩니다. 서브루틴의 종료는 실행 흐름에 달려 있기 때문에, 어떤 라벨이든 Goto 목표와 서브루틴의 시작으로 행위할 수 있습니다.

동적인 라벨

라벨을 받는 많은 명령어들은 또 %MyLabel%와 같이 변수 참조도 받을 수 있습니다. 이 경우 변수에 저장된 이름이 목표로 사용됩니다. 그렇지만, 수행성능은 약간 줄어듭니다. 왜냐하면 목표 라벨을 스크립트가 처음 적재될 때 "한 번만 찾아 보는 것이 아니라" 매번 찾아 보아야 하기 때문입니다.

핫키와 핫스트링

Each double-colon hotkey also creates a label, unless it is a function hotkey. The label's name is exactly as written in the script, and can differ from the hotkey's name as reported by A_ThisHotkey, such as if the modifiers are written in a different order. The label name includes the hotkey's modifiers but not the final double-colon (::).

A hotstring label's name includes the leading colon and options, but not the final double-colon (::).

핫키핫스트링 라벨Goto, Gosub 그리고 기타 명령어에 대하여 유효합니다. However, a hotkey or hotstring label can only be used in this manner if it is the first label with the given name. 예를 들어:

gosub ^+a  ; Example hotkey.
gosub +^a  ; Global hotkey.
gosub Esc  ; Esc label.
ExitApp

#IfWinActive Example
^+a::MsgBox Example hotkey.
Esc:
    MsgBox Esc label.
    return
#If
+^a::MsgBox Global hotkey.
Esc::MsgBox Esc hotkey.

This limitation also applies to the Hotkey command's Label parameter.

이름있는 회돌이

라벨은 또 ContinueBreak 명령어에 대하여 회돌이를 식별하는 데에도 사용할 수 있습니다. 스크립트는 쉽게 깊이에 상관없이 내포 회돌이를 계속하거나 빠져 나올 수 있습니다.

함수

[v1.1.20+]: 함수는 많은 경우 라벨을 대신해 사용할 수 있습니다. 여기에는:

함수의 혜택은 지역 변수를 사용할 수 있다는 것입니다. (Gui 제어 이벤트와 같이) 어떤 경우 유용한 정보를 담고 있는 매개변수를 받기도 합니다.

IsLabel(), A_ThisLabel, Gosub, Goto, OnExit, SetTimer, Hotkey, Gui Events, g-label, OnClipboardChange Label