2008年7月12日 星期六

Script-Tip003關於變數

*什麼是「變數(Variables)」
以寫程式而言,「變數」是非常重要的,不管您使用何種語言,您都會用到,簡單地說,所謂的變數即是一個

「值(Values)」的代號或位置握柄,而這個「值」是可以變更和重覆使用的,例如:


code:--------------------------------------------------------------------------------
amount = 10;
--------------------------------------------------------------------------------

這個程式碼,便是定義一個變數名為 amount ,並且指定一個值→10,請注意,是「指定」不是「等於」,

amount 這個變數的值未必會一直都是10,您可以這樣想,變數是一個容器,而值便是放入容器中的東西,它隨

時可以被更換。
例如:

code:--------------------------------------------------------------------------------
amount = 10;
amount = amount + 20;
--------------------------------------------------------------------------------

上面程式碼的意思是說,定義一個變數叫做 amount,先指定它的值是 10,接著在第二行中,把amount中的值

拿出來加上20再放回amount中,所以程式執行到此,amount的值是30,這樣的式子在數學是不對的,但在程式

中卻是可行的。


code:--------------------------------------------------------------------------------
a = 10;
b = a;
--------------------------------------------------------------------------------

上面的程式的意思是定義一個變數叫做 a,先指定它的值是 10,再定義一個變數名為b,將「a的值」放入b中

,所以這時b的值也變成了10

*變數的範圍
在AMS中,變數預設都是全域的,意即:程式執行後,一旦某變數被定義,則這個變數便在整個程式中的所有

事件(Event)都可使用,不管在哪一頁(page)或哪個物件的事件,當然您必須能確定,在使用(呼叫)某個變數之前

,已定義了該變數,並指定一個值給它。
例如:在On Startup中的程式

code:--------------------------------------------------------------------------------
foo = 10;
--------------------------------------------------------------------------------

接下來在page1中放個按鈕,在按鈕的OnClick中鍵入:

code:--------------------------------------------------------------------------------
Dialog.Message("test",foo);
--------------------------------------------------------------------------------

上面的程式是要求顯示對話並在其中顯示foo的值。
※有個問題是,若您的程式越寫越大,page數也很多,上頭的物件也多,您是不是有可能不小心重新定義了之

前已定義過的變數名稱,那可能會造成意想不到的錯誤!
例如,您可能在某個地方需要寫個式子,所以如下:

code:--------------------------------------------------------------------------------
foo = 1;
text = "";
if foo < 50 then
text = text..foo;
foo = foo+1;
end
Dialog.Message("test",text);
--------------------------------------------------------------------------------

最後foo己經變成50了,但您可能不知道,還一直以為foo是10
所以如果您在某個地方的程式碼或函數中,需要有幾個變數是來計數的、迴圈的…,用完就要算了的,在定義

變數時,可以在前面加上 local 這個關鍵字,如:

code:--------------------------------------------------------------------------------
local t = 4;
local x = (t+1)*8;
--------------------------------------------------------------------------------

上面加上 local 的變數的效力就僅止於正在執行的event或function中,執行完就無效了,就不會有上面所說的困

擾了。
*變數的命名法則:英文、數字、底線的組合
1.一定要以英文字母開頭
2.變數名稱中不可以含有特殊字元% $ $ + 空格.........
3.不可以使用AMS的保留字
合法的命名例子
a
strName
_My_var
data1
bReset
tb_sut
tb_n_count_1

不合法的例子
2
7data
%vari
$strData
for
local
_F+r
User name

※系統保留字
and break do else elseif
end false for function if
in local nil not or
repeat return table then true
until while

沒有留言:

張貼留言