ラベルはコード行を識別するもので、Gotoターゲットとして使用したり、ループから抜け出したり継続するループを指定したりすることができます。ラベルは、名前とコロンで構成されています:
this_is_a_label:
空白とコメントを除き、ラベルと同じ行に他のコードを記述することはできません。
名前:ラベル名は大文字と小文字を区別せず(ASCII文字)、アルファベット、数字、アンダースコア、非ASCII文字で構成されます。For example: MyListView, Menu_File_Open, and outer_loop.
スコープ:各関数はローカルラベルのリストを持つ。関数内では、その関数のラベルだけがスクリプトから見える/アクセスできる。
ターゲット:ラベルのターゲットは実行コードの次の行である。実行可能コードには、関数、代入、式、ブロックが含まれるが、ディレクティブ、ラベル、ホットキー、ホットストリングは含まれない。以下の例では、run_notepad_1
とrun_notepad_2
はともにRun
行を指している:
run_notepad_1: run_notepad_2: Run "notepad" return
実行:ディレクティブと同様に、ラベルは通常の実行中に到達しても何の効果もない。
ホットキーとホットストリングの定義はラベルに似ていますが、ラベルではありません。
ホットキーは、ホットキーの後にダブルコロンが続く。
^a::
ホットストリングは、コロン、0個以上のオプション、もう1つのコロン、省略形、ダブルコロンで構成される。
:*:btw::
場合によっては、ラベル名の代わりに変数を使うこともできる。このような場合、変数に格納されている名前がターゲット・ラベルを探すのに使われる。しかし、スクリプトが最初にロードされたときに一度だけではなく、毎回ターゲット・ラベルを「ルックアップ」しなければならないため、パフォーマンスは若干低下する。
ラベルは、Continue文やBreak文のループを識別するためにも使える。これによってスクリプトは、いくつでもネストされたループを簡単に続行したり抜け出したりできるようになる。