2008年7月12日 星期六

Script-Tip005資料型別

*Number(數值)
在AMS中,Number代表所有的數字性的值,不像其他開發程式還將數值分為整數、單精數、

倍精數、.....,只有一類:就是數字,可容許的數值表示如下:
4 4. .4 0.4 4.57e-3 0.3e12

*String(字串)
所謂的String(字串)是指一連串的字元的集合,例如:"我的測試" 這個字串即是一個4個中文字

元的字串,若您的字串是英文,一個英文字母也是一個字元,這說明了AMS是支持雙位元編

碼的,所以您可以放心的使用中文字。
字串可以含有非常長的字元(甚至長至整篇文章),其中也可以包含空白字元,也可以包含合

法的8-bit ASCII字元或null(\0),您必須將欲表示的字串置於成對的 " " 或 ' '中,通常是使用

前者,在程式引擊方面,AMS會自動分配記憶體的使用,不需您操心。
例如以下的表示法:


code:--------------------------------------------------------------------------------
name = "Joe blow";
Lastname = 'worm';
Dialog.Message("Hello","我是咖啡虫!");
--------------------------------------------------------------------------------


有時候,您想在字串中顯示單括號(' ')或雙括號(" ")您可以如下的寫法:

code:--------------------------------------------------------------------------------
title = "小朋友,你們知道 '神木' 在哪裡嗎?" --這個字串可顯示 '神木'
title2 = '小朋友,你們知道 "神木" 在哪裡嗎?' --這個字串可顯示 "神木"
--------------------------------------------------------------------------------

當然我們還可以使用字元跳脫的方法:為了能順利地顯示一些系統內定有特殊意義的字元,

AMS規定以 \ 反斜線當作跳脫字元的定義符號。
以下是有特殊意義的跳脫符號:
\a 鈴聲
\b 退一格
\f
\n 新的一行
\r 按Enter
\t 垂直的tab
\v 橫向的tab
\\ 表示一個\
\" 表示"
' 表示'
\[ 表示[
\] 表示]

最常會用到的是\r \n \\
※如果您對ASCII字元表熟悉的話,跳脫符號也可以用ASCII來表示,例如寫\n和\10是一樣的

意思,不過我建議還是用原來的\n就好了。
如果您的字串很長,像是一篇文章很多行,那您可以如下寫法:

code:--------------------------------------------------------------------------------
text = [[ 第一行的字
第二行的字
第三行的字
..........
..............
最後一行]];
--------------------------------------------------------------------------------

如此text這個變數就存著那麼多的字,而且保留著您斷行的樣子!
※當字串遇上運算符號,如果您的字串可以被轉成數字,那麼AMS會自動把字串的部份轉成

數字進行字串,如:

code:--------------------------------------------------------------------------------
a = "13" + 5 --這個a的值會是18
b = "15" * 3 --這個b的值會是45
--------------------------------------------------------------------------------

不過請注意下列的範例:

code:--------------------------------------------------------------------------------
a = "13 + 5" --a的值便是"13 + 5"這個字串,+號在" "中也視為字串,所以不會計算
b = "您好" * 3 --這式子將會出錯,因為"您好"無法轉換成數字
--------------------------------------------------------------------------------


*Nil 無
這是一個非常特別的資料型別,它的意思就是空值,也就是變數中「沒有值」,您可以指定

一個「空值」給一個變數,這樣可以把它原有的值清空

code:--------------------------------------------------------------------------------
a = nil;
--------------------------------------------------------------------------------

在條件式子中,nil被視為「偽(false)」,如下例:

code:--------------------------------------------------------------------------------
a = nil;
if a then
--這裡的程式將不會執行,因為if條件式必須為「真(true)」才會執行
end
--------------------------------------------------------------------------------


*Booen布林值
這類型的的資料型態所帶的值只有二種,就是「真(true)」和「偽(false)」,這常用在判斷式中

做邏輯運算,如:

code:--------------------------------------------------------------------------------
a = true; --直接指定變數a為真
b = 10 > 12; --右邊比較的結果指定給b,這個b是偽
c = true;
d = false;
if (c and d) then --如果c和d做and運算,答案若為「真」便執行裡面的程式
--程式
end
---當然上面的例子,c and d的結果為false,and運算必需二方都為真,結果才為真
--------------------------------------------------------------------------------


*function 涵數
AMS予許您將一些程式碼集合成自定的一塊,稱為function,這個的用意主要是當您在寫一個

程式時,有一些程式可能常重覆,若每次都再抄一次實在多餘,您便可把這些程式集合成

function,需要時再呼叫function的名字就好了,如此這些程式就中要寫一次就好了。

code:--------------------------------------------------------------------------------
--自定一個名為coffee的涵數
function coffee()
--程式寫在這兒
end

coffee(); --呼叫涵數
--------------------------------------------------------------------------------


*Table 表
這是一個非常強大且有用處的資料型別,它可儲存大量「有索引的值」,若您有其他程式基

礎,您也可以想像,它就是「陣列(arrays)」,以下範例:

code:--------------------------------------------------------------------------------
--以大括號來定義一個名為Myarr的表,內含三個元素,元素間以 , 隔開
Myarr = {"一","二","三"};
--跳出對話盒並顯示陣列的第二個元素值
Dialog.Message( "title", Myarr[2] );
--------------------------------------------------------------------------------


另一個例子:索引未必是數字

code:--------------------------------------------------------------------------------
t_one = {}; --定義一個空的table
--在table中放入二個元素,並且使用文字式的索引
t_one.first = "Apple";
t_one.two = "Orange";
--利用文字式的索引取值
Dialog.Message( "title", t_one.two ); --想要顯示Orange
--------------------------------------------------------------------------------


另一個列子:

code:--------------------------------------------------------------------------------
--建立一個擁有5個元素的table
t1 = {"一","二","我的","範","本"};
t1[6] = "加入第六個元素";
--t1 這時有6個元素了
t2 = t1; --建一個table名為t2並把t1的內容指定給它
--請注意,上面的程式並沒有複製的意思,代表的是有二個不同名稱的變數(t1,t2)指向了同一--

個table
--------------------------------------------------------------------------------


※在我們指定值給變數時,我們使用的是「 = 」這個符號。

code:--------------------------------------------------------------------------------
a = 8;
b = "文字";
c, d = 6, 10; --6指定給c ,10指定給d

沒有留言:

張貼留言