馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
這個庫通過表os實現。
os.clock ()
功能:返回一個程序使用CPU時間的一個近似值
例如:
local x = os.clock();
print(os.clock())
local s = 0;
for i = 1, 100000000 do
s = s + i;
end
print(string.format("elapsed time : %.2f
", os.clock() - x));
輸出:
0
elapsed time : 2.55
os.date ([format [, time]])
功能:返回一個按format格式化日期、時間的字串或表
若設置time參數,則按time指定的時間格式化,否則按當前時間格式化
參數:
format:
"!":按格林尼治時間進行格式化。
"*t":將返一個帶year(4位),month(1-12), day (1--31), hour (0-23), min (0-59), sec (0-61) , wday (星期幾, 星期天為1), yday (年內天數), and isdst (是否為日光節約時間true/false)的帶鍵名的表; 若沒有"*t"則返回一個按C的strftime函數格式化的字符串。
若不帶參數,則按當前系統的設置返回格式化的字符串os.date() <=> os.date("%c")
例如:
t = os.date("*t", os.time());
for i, v in pairs(t) do
print(i, v);
end
輸出:
hour 14
min 58
wday 2
day 10
month 8
year 2009
sec 18
yday 222
isdst false
對於其它的格式字符串,os.date會將日期格式化為一個字符串
例如:
print(os.date("today is %A, in %B")) -->today is Tuesday, in May
print(os.date("%x", 906000490)) -->09/16/1998
所有格式化字符串如下:
%a 一星期中天數的簡寫(Wed)
%A 一星期中天數的全稱(Wednesday)
%b 月份的簡寫(Sep)
%B 月份的全稱(September)
%c 日期和時間(09/16/98 23:48:10)
%d 一個月中的第幾天(16)[0 ~ 31]
%H 24小時制中的小時數(23)[00 ~ 23]
%I 12小時制中的小時數(11)[01 ~ 12]
%j 一年中的第幾天(259)[01 ~ 366]
%M 分鐘數(48)[00 ~ 59]
%m 月份數(09)[01 ~ 12]
%P "上午(am)" 或"下午(pm)" (pm)
%S 秒數(10)[00 ~ 59]
%w 一星期中的第幾天(3)[0 ~ 6 = 星期天~ 星期六]
os.difftime (t2, t1)
功能:返回t1到t2相差的秒數
例如:
t1 = os.time();
for i = 0, 10000000 do
os.time();
end
t2 = os.time();
print(os.difftime(t2, t1));
輸出:
2
os.execute ([command])
功能:相當於C的system函數,返回系統狀態碼
例如:
os.execute("pause")
輸出:
按任意鍵繼續. . .
os.exit ([code])
功能:相當於C的exit函數,終止主程序,code為返回值
例如:
os.exit(1)
os.getenv (varname)
功能:返回當前進程的環境變量varname的值,若變量沒有定義時返回nil
例如:
print(os.getenv("USERDOMAIN"))
print(os.getenv("SystemRoot"))
print(os.getenv("Os2LibPath"))
print(os.getenv("rogramFiles" ))
print(os.getenv("APPDATA" ))
print(os.getenv("ALLUSERSPROFILE" ))
print(os.getenv("CommonProgramFiles" ))
print(os.getenv("COMPUTERNAME" ))
print(os.getenv("USERNAME"))
print(os.getenv("USERPROFILE" ))
print(os.getenv("ComSpec"))
print(os.getenv("LOGONSERVER" ))
print(os.getenv("NUMBER_OF_PROCESSORS" ))
print(os.getenv("OS"))
print(os.getenv("ATHEXT" ))
print(os.getenv("ROCESSOR_ARCHITECTURE" ))
print(os.getenv("ROCESSOR_IDENTIFIER" ))
print(os.getenv("ROCESSOR_LEVEL" ))
print(os.getenv("ROCESSOR_REVISION" ))
print(os.getenv("USERDOMAIN"))
print(os.getenv("SystemRoot" ))
print(os.getenv("TEMP"))
輸出:
RDEV
C:WINDOWS
nil
C:Program Files
C:Documents and SettingsaiyunApplication Data
C:Documents and SettingsAll Users
C:Program FilesCommon Files
BAIYUN
baiyun
C:Documents and Settingsaiyun
C:WINDOWSsystem32cmd.exe
http://www.cnblogs.com/whiteyun/admin/file://rdev1/
2
Windows_NT
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw;.wlua
X86
x86 Family 15 Model 6 Stepping 5, GenuineIntel
15
0605
RDEV
C:WINDOWS
C:DOCUME~1aiyunLOCALS~1Temp
os.remove (filename)
功能:刪除文件或一個空目錄,若函數調用失敗則返加nil加錯誤信息
os.rename (oldname, newname)
功能:更改一個文件或目錄名,若函數調用失敗則返加nil加錯誤信息
os.setlocale (locale [, category])
功能:設置程序的當前設置,函數返回最新的值,失敗則返回nil
參數:
locale:一個指定當前設置的字串
"":一個空字串,當前設置被視為本地設置
"c":當前設置被視為標準c設置
nil:返回category指示設置名的當前值
category:一個描述要更改的設置名
"all"[默認], "collate", "ctype", "monetary", "numeric", "time"
os.time ([table])
功能:按table的內容返回一個時間值(數字),若不帶參數則返回當前時間
table的字段:year, month, day, hour, min, sec, isdst
例如:
print(os.time());
-->1249887340
print(os.time({year=1970, month=1, day=1, hour=0}));
-->10500
os.tmpname()
功能:返回一個臨時文件名。
I/O庫提供兩種不同的方式進行文件處理
1、io表調用方式:使用io表,io.open將返回指定文件的描述,並且所有的操作將圍繞這個文件描述
io表同樣提供三種預定義的文件描述io.stdin,io.stdout,io.stderr
2、文件句柄直接調用方式,即使用file:XXX()函數方式進行操作,其中file為io.open()返回的文件句柄
多數I/O函數調用失敗時返回nil加錯誤信息,有些函數成功時返回nil
1、io.close ([file])
功能:相當於file:close(),關閉默認的輸出文件
2、io.flush ()
功能:相當於file:flush(),輸出所有緩衝中的內容到默認輸出文件
3、io.lines ([filename])
功能:打開指定的文件filename為讀模式並返回一個迭代函數,每次調用將獲得文件中的一行內容,當到文件尾時,將返回nil,並自動關閉文件
若不帶參數時io.lines() <=> io.input():lines(); 讀取默認輸入設備的內容,但結束時不關閉文件
如:for line in io.lines("main.lua") do
print(line)
end
4、io.open (filename [, mode])
功能:按指定的模式打開一個文件,成功則返回文件句柄,失敗則返回nil+錯誤信息
mode:
"r": 讀模式 (默認);
"w": 寫模式;
"a": 添加模式;
"r+": 更新模式,所有之前的數據將被保存
"w+": 更新模式,所有之前的數據將被清除
"a+": 添加更新模式,所有之前的數據將被保存,只允許在文件尾進行添加
"b": 某些系統支持二進制方式
5、io.output ([file])
功能:相當於io.input,但操作在默認輸出文件上
6、io.popen ([prog [, mode]])
功能:開始程序prog於額外的進程,並返回用於prog的文件句柄(並不支持所有的系統平台)
7、io.read (...)
功能:相當於io.input():read
8、io.tmpfile ()
功能:返回一個臨時文件句柄,該文件以更新模式打開,程序結束時自動刪除
9、io.type (obj)
功能:檢測obj是否一個可用的文件句柄
返回:
"file":為一個打開的文件句柄
"closed file":為一個已關閉的文件句柄
nil:表示obj不是一個文件句柄
10、io.write (...)
功能:相當於io.output():write
11、file:close()
功能:關閉文件
注:當文件句柄被垃圾收集後,文件將自動關閉。句柄將變為一個不可預知的值
12、file:flush()
功能:向文件寫入緩衝中的所有數據
13、file:lines()
功能:返回一個迭代函數,每次調用將獲得文件中的一行內容,當到文件尾時,將返回nil,但不關閉文件
如:for line in file:lines() do body end
14、file:read(...)
功能:按指定的格式讀取一個文件,按每個格式函數將返回一個字串或數字,如果不能正確讀取將返回nil,若沒有指定格式將指默認按行方式進行讀取
格式:
"*n": 讀取一個數字
"*a": 從當前位置讀取整個文件,若為文件尾,則返回空字串
"*l": [默認]讀取下一行的內容,若為文件尾,則返回nil
number: 讀取指定字節數的字符,若為文件尾,則返回nil;如果number為0則返回空字串,若為文件尾,則返回nil;
15、file:seek([whence][,offset])
功能:設置和獲取當前文件位置,成功則返回最終的文件位置(按字節),失敗則返回nil加錯誤信息
參數
whence:
"set": 從文件頭開始
"cur": 從當前位置開始[默認]
"end": 從文件尾開始
offset:默認為0
不帶參數file:seek()則返回當前位置,file:seek("set")則定位到文件頭,file:seek("end")則定位到文件尾並返回文件大小
16、file:setvbuf(mode,[,size])
功能:設置輸出文件的緩沖模式
參數
mode:
"no": 沒有緩衝,即直接輸出
"full": 全緩衝,即當緩衝滿後才進行輸出操作(也可調用flush馬上輸出)
"line": 以行為單位,進行輸出(多用於終端設備)
最後兩種模式,size可以指定緩衝的大小(按字節),忽略size將自動調整為最佳的大小
17、file:write(...)
功能:按指定的參數格式輸出文件內容,參數必須為字符或數字,若要輸出其它值,則需通過tostring或string.format進行轉換
字符串庫為Lua提供簡易的字符串處理操作,所有的字串操作都是以1為基數的(C以0),也可使用負向索引,最後一個索引為-1 ; 所有的函數都存放在string表,並且已建立元表(__index=string表)
所以string.byte(s,i) <=> s:byte(i)
1、string.byte(s [, i [, j]])
功能:返回從i到j的字符所對應的數值(字符到ASCII值),i默認為1,j默認為i的值
如:s="123456" s1,2) => 49 50
-------------------------------------------------- ------------------------------
2、string.char (···)
功能:返回ASCII值參數對應的字符串
如:string.char(49,50) => 12
-------------------------------------------------- ------------------------------
3、string.dump(function)
功能:返回指定函數的二進制代碼(函數必須是一個Lua函數,並且沒有上值)
-------------------------------------------------- ------------------------------
4、string.find(s, pattern [, init [, plain]])
功能:查找s中首次出現pattern的位置,如果找到則返回首次出現的起始和結束索引否則返回nil
init:為搜索位置的起始索引,默認為1(也可以用負索引法表示)
plain:true 將關閉樣式簡單匹配模式,變為無格式匹配
-------------------------------------------------- ------------------------------
5、string.format (formatstring, ···)
功能:格式化字符串formatstring參數與C差不多
其中:*, l, L, n, p, h不被支持
c, d, E, e, f, g, G, i, o, u, X, x:接受數字參數
q, s:接受字符串參數
%q:為自動將對應參數字串中的特殊字符加上
如:string.format("%q", "a string with "quotes" and
new line")等於
"a string with "quotes" and
new line"
注:此函數不能接受字符串中間帶 的字符
-------------------------------------------------- ------------------------------
6、string.gmatch(s, pattern)
功能:返回一個迭代函數,每次調用此函數,將返回下一個查找到的樣式串對應的字符
如: s = "hello world from Lua"
for w in string.gmatch(s, "%a+") do
print(w)
end
為 hello
word
from
Lua
字串到表的賦值
t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
t[k] = v
end
-------------------------------------------------- ------------------------------
7、string.gsub (s, pattern, repl [, n])
功能:返回一個經repl替換pattern的字符串及替換的次數
s:待替換的字串
pattern:查找的字串
repl:要替換的內容(可以為字串,表,函數)
當repl為字符串時:進行對應字串的替換,%0~%9 %0為全匹配%% 為%
當repl為表時:
當repl為函數時:每次查找到字符都將
Lua5.1中數學庫的所有函數如下表:
abs 取絕對值math.abs(-15) 15
acos 反餘弦函數math.acos(0.5) 1.04719755
asin 反正弦函數math.asin(0.5) 0.52359877
atan2 x / y的反正切值math.atan2(90.0, 45.0) 1.10714871
atan 反正切函數math.atan(0.5) 0.463647609
ceil 不小於x的最大整數math.ceil(5.8) 6
cosh 雙曲線餘弦函數math.cosh(0.5) 1.276259652
cos 餘弦函數math.cos(0.5) 0.87758256
deg 弧度轉角度math.deg(math.pi) 180
exp 計算以e為底x次方值math.exp(2) 2.718281828
floor 不大於x的最大整數math.floor(5.6) 5
fmod (mod) 取模運算math.mod(14, 5) 4
frexp 把雙精度數val分解為數字部分(尾數)和以2為底的指數n,即val=x*2n math.frexp(10.0) 0.625 4
ldexp 計算value * 2的n次方math.ldexp(10.0, 3) 80 = 10 * (2 ^3) log10
計算以10為基數的對數math.log10(100) 2
log 計算一個數字的自然對數math.log(2.71) 0.9969
max 取得參數中最大值math.max(2.71, 100, -98, 23) 100
min 取得參數中最小值math.min(2.71, 100, -98, 23) -98
modf 把數分為整數和小數math.modf(15.98) 15 98
pow 得到x的y次方math.pow(2, 5) 32
rad 角度轉弧度math.rad(180) 3.14159265358
random 獲取隨機數math.random(1, 100) math.random(100) 獲取1-100的隨機數
randomseed 設置隨機數種子math.randomseed(os.time()) 再使用math.random
sinh 雙曲線正弦函數math.sinh(0.5) 0.5210953
sin 正弦函數math.sin(math.rad(30)) 0.5
sqrt 開平方函數math.sqrt(16) 4
tanh 雙曲線正切函數math.tanh(0.5) 0.46211715
tan 正切函數math.tan(0.5) 0.5463024 |
評分
-
查看全部評分

|