Language Reference - Variables

変数はすばやくアクセスできるようにメモリ上に記憶されたデータの置き場所です。  情報を出し入れできるメモリ上の郵便受けだと考えてください。例えば、ユーザーが入力した 値や方程式の解を憶えておくために変数を作ることができます。

それぞれの変数には(郵便受けと同じように)名前を付けることができます。 名前は$で始めなければならず、文字数字 アンダーバー (_)のみ使えます。  名前の例:

    $var1

    $my_variable

 

各変数はバリアント型として保持されます。

 

変数の宣言

変数はキーワードDimLocalGlobal で宣言し、作成します。

    Dim $var1

あるいは、複数の変数を1度で宣言することもできます。

    Dim $var1, $myvariable

 

また宣言をおこなわずに 変数に代入することもできます。 ただし多くの人は明示的な宣言を好みます。

    $var1 = "create and assign"

 

定数の宣言

定数はキーワードConst で宣言し、作成します。

    Const $const1 = 1, $const2=12

キーワードEnumを使用して宣言し、初期化することもできます。

    Enum $const1 = 1, $const2, $const3    ; 1, 2, 3
    Enum STEP 2 $incr0, $incr2, $incr4    ; 0, 2, 4
    Enum STEP *2 $mult1, $mult2, $mult4   ; 1, 2, 4

 

同名の変数がある場合、定数は宣言できません。

 

スコープ

変数のスコープはいつ、どのように変数を宣言したかによって変わります。  変数をスクリプトの最初に関数の外で宣言した場合、グローバルスコープ となり、スクリプトのどこからでも読み書きできるようになります。

変数を関数中で 宣言すると ローカルスコープになり、同じ関数の中でのみ使えるようになります。  関数内で作成された変数は関数終了時に自動的に破棄されます。

同じ名前のグローバル変数が無い限り、 変数をDimを使って宣言した場合、また関数内で代入した場合、 デフォルトではローカルスコープになります (同じ名前のグローバル変数があった場合はグローバル変数が再利用されます)。  変数宣言時に LocalキーワードとGlobalキーワードを 使用することで使用したいスコープに強制的に変更することができます。

配列

配列 とは同じ型とサイズのデータ要素系列を保持する変数です。 各要素にはインデックスを使ってアクセスすることができます。

例:

文字、"A"、"U"、"T"、"O"、"I"、"T"、"3"を記憶したいとしましょう。
7個の変数を使えばそれはできます。しかし、配列を使用するとより効果的です。

$Array[0]="A"
$Array[1]="U"
..etc..
$Array[6]="3"

インデックスさえわかれば、配列の特定の値にアクセスできます。

$MyChar=$Array[2]

$MyCharには文字"T"が代入されます('演算子'を参照)。


インデックスには他の変数や、式を使用することもできます。 従って、より複雑な方法で配列の要素に代入・参照をおこなうことができます。


配列は複数系列のインデックスを使用して、次のように複数次元にすることができます。

$Array[0][0]="Upper-Left"
$Array[1][0]="Lower-Left"
$Array[0][1]="Upper-Right"
$Array[1][1]="Lower-Right"

(値は一例)

64次元の配列まで使用できます。ただし総要素数が2^24 (16 777 216)を超えてはいけません。

スクリプトで配列を使用する前に、その境界を'Dim'キーワード を使って定義しなければなりません。

配列のデータ型


普通、1つの配列は同じ種類のデータ型しか記憶できません。 しかし厳密に言えば、AutoItのバリアント型は数値からブール値までなんでも記憶できます。 従って1つのAutoIt配列は異なった型の値を記憶でき、他の配列をすら記憶できます。

$Array[0]=1
$Array[1]=true
$Array[2]="Text"
$Array[3]=$AnotherArray

これらはAutoItでは厳密には禁止されていません。 ただし異なるデータ型を1つの配列に混ぜて使うことはお勧めできません。 特に配列内の配列の使用はスクリプトの実行速度に大きな影響を及ぼします。