変数、定数
変数
変数とは、データを一時的に記憶しておくための領域です。
変数=フォルダーと例えると分かりやすいかと思います。
この変数に固有の名前を付けたものを変数名と呼び、記憶されているデータをその変数の値と呼びます。
Autoit で変数名を付ける場合、名前の先頭には必ず「$」を付け、使用できる文字は英数字、アンダーバー(_)のみです。
変数名の先頭に数字は指定できません。
例:
- 〇 $Autoit3
- ✕ $3Autoit
変数値は固定されていないので、プログラム中で何度も値を変更することができます。
配列を作成する場合、Dim、Local、Global のいずれかを使用して変数を宣言しなければなりません。
- Dim = 同名のグローバル変数がなければローカル(有効範囲が制限される)変数になります。
- Local = ローカル または 関数内(関数内でのみ有効)変数。
- Global = グローバル(すべての範囲で有効)変数。
これら Dim/Local/Global 3つのキーワードがありますが、主に使用するのは「Global」と「Local」です。
場所により使用する変数を使い分けましょう。
Dim $AA[2] = ["1","3"]
;~ Local $AA[2] = ["1","3"]
;~ Global $AA[2] = ["1","3"]
MsgBox(0, '', $AA[0])
※注意事項
例えば次のコードですが、大文字と小文字の同名の変数が存在する場合、メッセージボックスで表示される結果は「6」となります。
Autoit での変数名は、大文字と小文字は区別せず、同じものだと認識します。
$aa = 5
$AA = 6
MsgBox(0, '', $aa)
定数
定数とは、簡単に言うと値の変更できない変数です。
定数は、通常キーワード Const を使用して宣言します。
Const で定数を宣言する場合は必ず値の代入をします。
例えば次のコードですが、Const で宣言した変数に「6」を代入しています。
その後に $AA = 5 というように「5」を代入しようとしても「Const」で宣言されているため、値の変更ができません。
Const $AA = 6
$AA = 5
MsgBox(0, '', $AA)
または、キーワード Enum を使用して宣言することもできます。
次のコードは Const と同様に値を変更することができません。
Enum $E1VAR1 = 3
$E1VAR1 = 2
MsgBox(4096, "", "Expect 0: " & $E1VAR1)
Const と違い、Enum は値を初期化することができます。
Global Enum $E1VAR1, $E1VAR2, $E1VAR3
MsgBox(4096, "", "Expect 0: " & $E1VAR1)
MsgBox(4096, "", "Expect 1: " & $E1VAR2)
MsgBox(4096, "", "Expect 2: " & $E1VAR3)
Global Enum $E2VAR1 = 10, $E2VAR2, $E2VAR3 = 15
MsgBox(4096, "", "Expect 10: " & $E2VAR1)
MsgBox(4096, "", "Expect 11: " & $E2VAR2)
MsgBox(4096, "", "Expect 15: " & $E2VAR3)
Global Enum Step *2 $E3VAR1, $E3VAR2, $E3VAR3
MsgBox(4096, "", "Expect 1: " & $E3VAR1)
MsgBox(4096, "", "Expect 2: " & $E3VAR2)
MsgBox(4096, "", "Expect 4: " & $E3VAR3)
Enum の便利な使い方
例えば Dim $arr[3] = [“ユーザー名”, “パスワード”, “メールアドレス”] というように配列を定義します。
すると配列内のデータは次のようになります。
- $arr[0] = “ユーザー名”
- $arr[1] = “パスワード”
- $arr[2] = “メールアドレス”
これでもいいのですが、$arr[0] が “ユーザー名” ・・・少し覚えにくいと思いませんか?
Enum を使うと次のように $arr の何番目がユーザー名などと覚えずに、$arr の中の $ID がユーザー名というように覚えやすくなります。
Dim Enum $ID, $PW, $email
Dim $arr[3] = ["ユーザー名", "パスワード", "メールアドレス"]
MsgBox(0, "", "$arr[0]=" & $arr[0] & @CRLF & "$arr[$id]=" & $arr[$ID])
MsgBox(0, "", "$arr[1]=" & $arr[1] & @CRLF & "$arr[$pw]=" & $arr[$PW])
MsgBox(0, "", "$arr[2]=" & $arr[2] & @CRLF & "$arr[$email]=" & $arr[$email])
コメント