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)。


edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()