1. 變數組成
如之前所提, AutoIt 變數都是以 $ 方式代表變數,變數必須以 $ 為開頭,且只能有數字、字數、底線所組成。
2. Local 變數
使用 Local 宣告時,變數將被視為區域變數。如
Local $L_Var1, $Var2
3. Gobal 變數
使用 Gobal 宣告時,變數將被視為 Gobal 變數。如
Gobal $G_Var1, $G_Var2
------------------ 分隔線 ------------------ 分隔線 ------------------ 分隔線 ------------------
為了說明 Gobal 和 Local 的差別,首先要說變數生命週期的概念,我以 AutoIt舉一個例子
Gobal $Gobal_Var = 10; ; 一開始就宣告此全域變數, 生命週期從程式開始一直到結束
MyFunc1() ; // $Gobal_Var is still equ 10
MyFunc2() ; // $Gobal_Var changed to 1
Func MyFunc1()
Local $Gobal_Var = 1 ; 宣告為 Local, 生命週期只有在 MyFunc1 裡面
FuncEnd
Func MyFunc2()
$Gobal_Var = 1 ; 沒宣告過, 直接調用全域變數
FuncEnd
在 MyFunc1() 裡面自己再宣告一個 Local 的 $Gobal_Var 變數,這裡的 $Gobal_Var 和最上面的 $Gobal_Var 不同,進入MyFunc1() 時,程式會再重新為這個 Local 配置一個新的記憶體空間,最後結束 MyFunc1() 時, 這個 $Gobal_Var 會被銷毀,於是從頭到尾和最上面的 Gobal $Gobal_Var 無關。
至於在 MyFunc2() 裡面, $Gobal_Var 沒經過宣告就直接指定,於是它便指定到最上面的 Gobal $Gobal_Var。這部份還蠻難 解釋的,仍需多寫程式去體會。
------------------ 分隔線 ------------------ 分隔線 ------------------ 分隔線 ------------------
4. Dim 變數
對初學者而言,Dim 應是宣告變數較佳的選擇,因 Gobal 和 Local 常常不知道使用時機為何。Dim 宣告之變數,如變數名稱不存在於 Global 全域區域中,則設定為 Local 區域範圍 (此情況下它會再度使用全域變數!),如
Dim $D1, $D2
5. Const 常數
這部份和 C/C++ 的 Const 修飾字很像,和 C/C++ 一樣,使用 Const 第一次一定要給右值,因其後便無法再 assigned 給 Const 變數。 如
Dim Const $PI = 3.14159 ; 將 $PI 宣告為一常數
$PI = 3.14 ; error, 不可再變動
6. Array 陣列 (這裡竟然說明書是翻成 "群組" )
AutoIt 的陣列非常特殊,似乎只有靜態陣列,無法去刪除它 ( 除非當初是用 Local 宣告,最後等它生命週期結束)。但裡面的資料型態竟可混用,但這裡必須提醒各位,陣列裡面的資料型態最好不要混用,不然到時容易出錯,關於 Array 的使用後續會有另一篇文章做介紹。一維陣列使用範例如下
Dim $Array1[5] = ["文字0", "文字1", "文字2", "文字3", "文字4"] ; 文字陣列
Dim $Array2[2] = [0, 1] ; 數字陣列
Dim $Array3[3] = [ "文字", 1.23, true] ; 混用 文字、數字、布林之陣列
像上面的 $Array3 就用得不好。然而 AutoIt 在陣列部份使用限制卻非常多:
A. 宣告時一定要指定陣列大小。
B. 在一個陣列內,最多可使用到 64 組範圍,項目總數不能大於 2^24 (16 777 216)。