2008年7月12日 星期六

Script-Tip011其他內建涵數

*dofile
AMS的程式引擎完全支援LUA程式程言,您可以將程式寫在外面存成*.lua(純文字檔),在您的

AMS程式中再以dofile將外部程式檔引入及執行。
語法:

dofile(lua檔路徑);

您可以用這種方式來幫助您整理及分類龐大的程式碼,每執行一次上述的語法,路徑中的lua

檔便會重新讀入並執行一次。

*require
與dofile一樣是引入外部的lua檔並執行,不同的地方在於,程式啟動後,以require引入的lua檔

只會執行一次,並存於記憶體中,就算您在某個event中再require一次,程式引擎也不會重讀

路徑中的lua檔。
語法:

require(lua檔路徑);

※require很適合您將變數的初始化或專案會用到的涵數寫在lua然後引入,這樣可避免大量的

變數式及functions寫在global script中,程式碼多到您自己眼花。

※只要您將您要引入的外部lua檔,放入專案的Modules目錄中,您在寫路徑的時候就不必寫完

整路徑,只要寫檔名就行了,這適用於dofile及require
例如:您寫了一個外部檔test.lua並放入專案的Modules目錄中,那您引入的語法:

dofile("test.lua");

require("test.lua");

*type
這個內建涵數是讓您用來取得一個變數所帶的資料型別的,語法:

my_var = type(變數);

依資料的不同,它會傳回六種字串名:"nil","number","string","boolean","table","function"
例如:
a = 898;
my_var = type(a); --my_var會得到"number"這個字串值

b = "coffeeworm";
two_var = type(b); --two_var會得到"string"這個字串值

※在程式實務中,有時您必須確認一下變數的型別是不是您所想要的,以避免出錯。
範例:


code:--------------------------------------------------------------------------------
function Max(n1, n2)
if (type(n1)~= "number") or (type(n2)~= "number") then --利用這行來判斷是否二個參數都是數字
Dialog.Message("錯誤","二個都必須輸入數字");
return nil;
else
if n1 > n2 then
return n1;
else
return n2;
end
end
end

沒有留言: