このドキュメントでは、コードではなく説明に焦点を当てて、AutoHotkey で使用されるいくつかの一般的な概念と規則について説明します。読者は、スクリプトやプログラミングの予備知識を持っているとは想定されていませんが、新しい用語を習得する準備ができている必要があります。
構文の詳細については、Scripting Languageを参照してください。
目次
値
ストリングス
数字
ブール値
なし
オブジェクト
オブジェクト プロトコル
変数
初期化されていない変数
組み込み変数
環境変数
変数参照 (VarRef)
キャッシング
機能
メソッド
制御フロー
詳細
文字列エンコーディング
純粋な数字
名前
オブジェクトへの参照
値
値は、プログラム内の単なる情報です。たとえば、送信するキーまたは実行するプログラムの名前、ホットキーが押された回数、アクティブにするウィンドウのタイトル、またはプログラムまたはスクリプト内で何らかの意味を持つその他のもの。
値
ストリングス
数字
ブール値
なし
オブジェクト
オブジェクト プロトコル
変数
初期化されていない変数
組み込み変数
環境変数
変数参照 (VarRef)
キャッシング
機能
メソッド
制御フロー
詳細
文字列エンコーディング
純粋な数字
名前
オブジェクトへの参照
値
値は、プログラム内の単なる情報です。たとえば、送信するキーまたは実行するプログラムの名前、ホットキーが押された回数、アクティブにするウィンドウのタイトル、またはプログラムまたはスクリプト内で何らかの意味を持つその他のもの。
AutoHotkey は、次のタイプの値をサポートしています。
文字列(テキスト)
数値(整数および浮動小数点数)
オブジェクト
Type関数を使用して、値の型を判別できます。
数値(整数および浮動小数点数)
オブジェクト
Type関数を使用して、値の型を判別できます。
その他の関連する概念:
ブール値
なし
ストリングス
文字列は単なるテキストです。各文字列は、実際には一連の文字列または文字列ですが、1 つのエンティティとして扱うことができます。文字列の長さはシーケンス内の文字数ですが、文字列内の文字の位置は単にその文字の連続番号です。AutoHotkey の慣例により、最初の文字の位置は 1 です。
なし
ストリングス
文字列は単なるテキストです。各文字列は、実際には一連の文字列または文字列ですが、1 つのエンティティとして扱うことができます。文字列の長さはシーケンス内の文字数ですが、文字列内の文字の位置は単にその文字の連続番号です。AutoHotkey の慣例により、最初の文字の位置は 1 です。
数値文字列:数字の文字列 (またはサポートされているその他の数値形式) は、数学演算または比較で必要になると、自動的に数値として解釈されます。
スクリプト内でリテラル テキストをどのように記述するかは、コンテキストによって異なります。たとえば、式では、文字列を引用符で囲む必要があります。ディレクティブ (#HotIf を除く) とホットストリングの自動置換では、引用符は必要ありません。
文字列の仕組みの詳細については、文字列のエンコードを参照してください。
数字
AutoHotkey は次の数値形式をサポートしています。
AutoHotkey は次の数値形式をサポートしています。
123、00123または などの 10 進整数。-1
0x7B、0x007Bまたは などの 16 進数の整数。-0x1
などの 10 進浮動小数点数3.14159。
ドキュメントに記載されている場合を除き、16 進数は接頭辞0xまたはを使用する必要があります。このプレフィックスは、または記号が存在する場合はその後、先頭のゼロの前に0X記述する必要があります。たとえば、有効ですが、そうではありません。+-0x001000x1
0x7B、0x007Bまたは などの 16 進数の整数。-0x1
などの 10 進浮動小数点数3.14159。
ドキュメントに記載されている場合を除き、16 進数は接頭辞0xまたはを使用する必要があります。このプレフィックスは、または記号が存在する場合はその後、先頭のゼロの前に0X記述する必要があります。たとえば、有効ですが、そうではありません。+-0x001000x1
小数点で書かれた数値は、小数部分がゼロであっても、常に浮動小数点と見なされます。たとえば、42と は42.0通常交換可能ですが、常にではありません。科学表記法も認識されますが (例: 1.0e4and )、小数点がなくても常に浮動小数点数が生成されます。-2.1E-4
ユーザーの地域設定でコンマが指定されている場合でも、小数点記号は常にドットです。
数値が文字列に変換されると、10 進数として書式設定されます。浮動小数点数は完全な精度でフォーマットされます (ただし、冗長な後続ゼロは破棄されます)。これにより、場合によっては不正確さが明らかになることがあります。Format関数を使用して、数値文字列を別の形式で生成します。浮動小数点数は、Round関数を使用してフォーマットすることもできます。
数値の範囲と精度の詳細については、純粋な数値を参照してください。
ブール値
ブール値は、trueまたはfalseのいずれかです。ブール値は、式の真など、可能な状態が 2 つだけあるものを表すために使用されます。たとえば、x の値が y より小さいか等しい場合、式はtrue(x <= y)です。ブール値は、yesまたはno、onまたはoff、downまたはup ( GetKeyStateなど) などを表すこともできます。
ブール値は、trueまたはfalseのいずれかです。ブール値は、式の真など、可能な状態が 2 つだけあるものを表すために使用されます。たとえば、x の値が y より小さいか等しい場合、式はtrue(x <= y)です。ブール値は、yesまたはno、onまたはoff、downまたはup ( GetKeyStateなど) などを表すこともできます。
AutoHotkey には特定のブール型がないため、整数値を使用して0false を表し、1true を表します。値が true または false である必要がある場合、空白またはゼロの値は false と見なされ、他のすべての値は true と見なされます。(オブジェクトは常に true と見なされます。)
trueおよび という単語は、 1 と 0 を含む組み込み変数falseです。スクリプトを読みやすくするために使用できます。
なし
AutoHotkey には、他の言語に見られるような、 Nothing、null、nil、またはundefinedを一意に表す値はありません。
AutoHotkey には、他の言語に見られるような、 Nothing、null、nil、またはundefinedを一意に表す値はありません。
「null」または「未定義」の値を生成する代わりに、値を持たない変数、プロパティ、配列要素、またはマップ項目を読み取ろうとすると、UnsetError がスローされます。これにより、null 値が暗黙的にコードを介して伝播することを許可されている場合よりも、エラーをより簡単に識別できます。参照:初期化されていない変数。
関数のオプション パラメータは、関数の呼び出し時に省略できます。その場合、関数は動作を変更したり、デフォルト値を使用したりできます。パラメータは通常、文字通りコードから省略されますが、unsetキーワードを使用して明示的または条件付きで省略されることもあります。この特別なシグナルは、 maybe 演算子 ( var ? )を使用して明示的にのみ伝播できます。設定されていないパラメータは、関数が実行される前にデフォルト値 (存在する場合) を自動的に受け取ります。
主に歴史的な理由から、空の文字列は、明示的な戻り値を持たない関数など、他の言語で null または未定義の値が使用される場所で使用されることがあります。
変数またはパラメーターが「空」または「空白」であると言われている場合、それは通常、空の文字列 (長さゼロの文字列) を意味します。これは、パラメーターを省略することと同じではありませんが、場合によっては同じ結果になることがあります。
オブジェクト
オブジェクトは、 AutoHotkey の複合または抽象データ型です。オブジェクトは、任意の数のプロパティ(取得または設定可能) とメソッド(呼び出し可能)で構成できます。各プロパティまたはメソッドの名前と効果は、特定のオブジェクトまたはオブジェクトの種類によって異なります。
オブジェクトは、 AutoHotkey の複合または抽象データ型です。オブジェクトは、任意の数のプロパティ(取得または設定可能) とメソッド(呼び出し可能)で構成できます。各プロパティまたはメソッドの名前と効果は、特定のオブジェクトまたはオブジェクトの種類によって異なります。
オブジェクトには次の属性があります。
オブジェクトは含まれていません。それらは参照されます。たとえば、alpha := []新しい配列を作成し、参照をalphaに格納します。bravo := alpha(オブジェクトではなく) への参照をコピーするbravoため、両方が同じオブジェクトを参照します。配列または変数がオブジェクトを含むと言われている場合、実際に含まれているのはオブジェクトへの参照です。
2 つのオブジェクト参照は、同じオブジェクトを参照している場合にのみ比較されます。
や など、ブール値が必要な場合、オブジェクトは常にtrueと見なされます。if obj!objobj ? x : y
各オブジェクトには一意のアドレス (メモリ内の場所) があり、 ObjPtr関数で取得できますが、通常は直接使用されません。このアドレスはオブジェクトを一意に識別しますが、オブジェクトが解放されるまでのみです。
オブジェクトが想定外のコンテキストで使用された場合、空の文字列として扱われることがあります。たとえば、MsgBox(myObject)空の MsgBox を示しています。それ以外の場合は、TypeError がスローされる可能性があります (これは将来標準になるはずです)。
2 つのオブジェクト参照は、同じオブジェクトを参照している場合にのみ比較されます。
や など、ブール値が必要な場合、オブジェクトは常にtrueと見なされます。if obj!objobj ? x : y
各オブジェクトには一意のアドレス (メモリ内の場所) があり、 ObjPtr関数で取得できますが、通常は直接使用されません。このアドレスはオブジェクトを一意に識別しますが、オブジェクトが解放されるまでのみです。
オブジェクトが想定外のコンテキストで使用された場合、空の文字列として扱われることがあります。たとえば、MsgBox(myObject)空の MsgBox を示しています。それ以外の場合は、TypeError がスローされる可能性があります (これは将来標準になるはずです)。