라벨

라벨은 코드 한 줄을 식별합니다. Goto의 목표나 서브루틴을 형성하는 데 사용할 수 있습니다.

LabelName:
선택

라벨을 만들려면, 위에 보여주는 바와 같이 라벨 이름 다음에 쌍점을 적습니다. 공백문자와 주석 외에, 다른 코드는 같은 줄에 쓸 수 없습니다.

이름: 라벨 이름은 대소문자를 구분하지 않으며, 스페이스나 탭 그리고 쉼표와 피신 문자 (`)를 제외하고 어떤 문자로도 구성할 수 있습니다. 그렇지만, 스타일 관례 때문에, 일반적으로 오직 기호와 숫자 그리고 밑줄 문자를 사용하는 편이 좋습니다 (예를 들어: MyListView, Menu_File_Open, 그리고 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%와 같이 변수 참조도 받을 수 있습니다. 이 경우 변수에 저장된 이름이 목표로 사용됩니다. 그렇지만, 수행성능은 약간 감소합니다. 왜냐하면 스크립트가 처음 적재될 때 한 번이 아니라 목표를 매번 "찾아 보아야"하기 때문입니다.

핫키와 핫스트링

핫키핫스트링 라벨Goto, Gosub 그리고 기타 명령어에 대하여 유효합니다. 그렇지만, 핫키나 핫스트링에 여러 변종이 있다면, 스크립트의 상단에 제일 가까운 변종이 사용됩니다. 핫키의 수식자나 핫스트링의 옵션은 모두 라벨의 이름의 일부입니다. 그러나 마지막 겹-쌍점 (::)은 생략합니다.

이름있는 회돌이

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

함수

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

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

관련 항목

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