Lua 4.0中關(guān)于函數(shù)學習筆記
Lua 4.0中關(guān)于函數(shù)學習筆記是本文要介紹的內(nèi)容,主要是把Lua4.0里面的函數(shù)總結(jié)出來,目的是為了和5.1中的函數(shù)進行區(qū)分,由于工作中經(jīng)常使用到4.0中的函數(shù),所以列出來也便于查詢和學習。
標準庫
- _ALERT
 - _ERRORMESSAGE
 - call
 - collectgarbage
 
功能:是垃圾收集器的通用接口,用于操作垃圾收集器
copytagmethods
dofile (filename)
功能:打開并且執(zhí)行一個lua塊,當忽略參數(shù)filename時,將執(zhí)行標準輸入設備(stdin)的內(nèi)容。返回所有塊的返回值。當發(fā)生錯誤時,dofile將錯誤反射給調(diào)用者
注:dofile不能在保護模式下運行
dostring
功能:執(zhí)行一個字符串形式的lua塊
error (message [, level])
功能:終止正在執(zhí)行的函數(shù),并返回message的內(nèi)容作為錯誤信息(error函數(shù)永遠都不會返回)
通常情況下,error會附加一些錯誤位置的信息到message頭部.
Level參數(shù)指示獲得錯誤的位置,
Level=1[默認]:為調(diào)用error位置(文件+行號)
Level=2:指出哪個調(diào)用error的函數(shù)的函數(shù)
Level=0:不添加錯誤位置信息
foreachi(table, function(i, v))
功能:會期望一個從 1(數(shù)字 1)開始的連續(xù)整數(shù)范圍,遍歷table中的key和value逐對進行function(i, v)操作,與lua5.1中的用法相同
foreach
功能:與foreachi不同的是,foreach會對整個表進行迭代,與lua5.1中的用法相同
- gcinfo
 - getflobal
 - gettagmethod
 - globals
 - newtag
 - next
 - print (...)
 
功能:簡單的以tostring方式格式化輸出參數(shù)的內(nèi)容
- rawget
 - rawset
 - rawgettable
 - rawsettable
 - setglobal
 - settag
 - settagmethod
 - tag
 
tonumber (e [, base])
功能:嘗試將參數(shù)e轉(zhuǎn)換為數(shù)字,當不能轉(zhuǎn)換時返回nil
base(2~36)指出參數(shù)e當前使用的進制,默認為10進制,如tonumber(11,2)=3
tostirng(e)
功能:將參數(shù)e轉(zhuǎn)換為字符串,此函數(shù)將會觸發(fā)元表的__tostring事件
type(v)
功能:返回參數(shù)的類型名("nil","number", "string", "boolean", "table", "function", "thread", "userdata")
assert(v [, message])
功能:相當于C的斷言,
參數(shù):
v:當表達式v為nil或false將觸發(fā)錯誤,
message:發(fā)生錯誤時返回的信息,默認為"assertion failed!"
getn(table)
功能:返回table中元素的個數(shù),用法與lua5.1中的table.getn相同
sort(table, function)
功能:給定的table進行升序排序,用法與lua5.1中的table.sort相同
tinsert(table, [pos,] value)
功能:向table中插入一個元素,用法與lua5.1中的table.insert相同
tremove(table[, pos])
功能:刪除table中的某一元素,用法與lua5.1中的table.remove相同
輸入輸出庫 io庫
colck
功能:返回一個程序使用CPU時間的一個近似值,同lua5.1中使用方法
date
功能:功能:返回一個按format格式化日期、時間的字串或表,同lua5.1中使用方法
execute
功能:相當于C的system函數(shù),返回系統(tǒng)狀態(tài)碼,同lua5.1中使用方法
exit
功能:相當于C的exit函數(shù),終止主程序,code為返回值,同lua5.1中使用方法
getenv
功能:返回當前進程的環(huán)境變量varname的值,若變量沒有定義時返回nil,同lua5.1中使用方法
remove
功能:刪除文件或一個空目錄,若函數(shù)調(diào)用失敗則返加nil加錯誤信息,同lua5.1中使用方法
rename
功能:更改一個文件或目錄名,若函數(shù)調(diào)用失敗則返加nil加錯誤信息,同lua5.1中使用方法
setlocale
功能:設置程序的當前設置,函數(shù)返回***的值,失敗則返回nil,同lua5.1中使用方法
tmpname
功能:返回一個臨時文件名,同lua5.1中使用方法
debug
功能:進入交互式的調(diào)試模式,解釋我們的輸入,輸入cont回車就退出
appendto
openfile(file, mod)
功能:打開一個文件,返回一個文件句柄。有兩個參數(shù),文件名和打開模式
參數(shù):file文件名
參數(shù):mode有下列幾種形態(tài)字符串:
r 打開只讀文件,該文件必須存在。
r+ 打開可讀寫的文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,只允許讀寫數(shù)據(jù)。
rt+ 讀寫打開一個文本文件,允許讀和寫。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
 
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留。
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留。
wb 只寫打開或新建一個二進制文件;只允許寫數(shù)據(jù)。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數(shù)據(jù)。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數(shù)據(jù)。
例如:
- local f = openfile("abc.txt", "rb")
 
closefile(f)
功能:關(guān)閉打開文件的句柄
- read(f, readtype)
 - 功能:從一個打開的文件中讀取數(shù)據(jù)。
 - 參數(shù):f是打開的文件句柄
 - 參數(shù):readtype表示要讀取的方式
 - "*a"表示讀取整個文件內(nèi)容
 - "*l"表示讀一行
 - "*n"表示讀一個數(shù)字
 - "*w"表示讀一個單詞
 
例如:
- local f = openfile("d:\\test\\test\\test.cpp", "rb");
 - assert(f)
 - local data = read(f, "*l");
 - print(data)
 - 輸出:this is the first line!
 
readfrom
seek(file, seekmod, pos)
功能:移動文件指針
參數(shù):f是打開的文件句柄
參數(shù):移動模式
set是設置指針移動的位置,第三個參數(shù)是具體要移動的位置
cur是從指針當前位置移動,第三個參數(shù)是具體要移動的位置,可以為負,表示前移
end是移動到文件結(jié)果,無第三個參數(shù)
例如:
- local f = openfile("d:\\test\\test\\test.cpp", "rb");
 - seek(f, "set", 10);
 - seek(f, "cur", 8);
 - seek(f, "end");
 - local data = read(f, "*l");
 - print(data);
 - closefile(f);
 
write(file, data)
功能:向一個文件中寫入數(shù)據(jù)
參數(shù):文件句柄
參數(shù):要寫入文件的數(shù)據(jù)
例如:
- local f = openfile("d:\\readme.txt", "wb");
 - assert(f)
 - write(f, "abcde")
 - closefile(f)
 - writeto
 
flush(f)
功能: 清除文件緩沖區(qū),文件以寫方式打開時將緩沖區(qū)內(nèi)容寫入文件
數(shù)學庫 math庫
abs
功能:取絕對值
sin
功能:正弦函數(shù)
cos
功能:余弦函數(shù)
tan
功能:正切函數(shù)
asin
功能:反正弦函數(shù)
acos
功能:余弦函數(shù)
atan
功能:反正切函數(shù)
atan2
功能:x / y的反正切值
ceil
功能:不小于x的***整數(shù)
floor
功能:不大于x的***整數(shù)
mod
功能:取模運算
frexp
功能:把雙精度數(shù)val分解為數(shù)字部分(尾數(shù))和以2為底的指數(shù)n,即val=x*2n
ldexp
功能:計算value * 2的n次方
sqrt
功能:開平方函數(shù)
min
功能:取得參數(shù)中最小值
max
功能:取得參數(shù)中***值
log
功能:計算一個數(shù)字的自然對數(shù)
log10
功能:計算以10為基數(shù)的對數(shù)
exp
功能:計算以e為底x次方值
deg
功能:弧度轉(zhuǎn)角度
rad
功能:角度轉(zhuǎn)弧度
random
功能:獲取隨機數(shù)
randomseed
功能:設置隨機數(shù)種子
字符串庫 string庫
strlen(str)
功能:獲得字符串的長度
- strlen("abcdefghijklmn")
 - 輸出:14
 
strsub(str, nStart, nEnd)
功能:截取字符串
- strsub("abcdefghijklmn", 4, 7)
 - 輸出:defg
 
strlower(str)
功能:字符串轉(zhuǎn)小寫
- strlower("AbCdEFg")
 - 輸出:abcdefg
 
strupper(str)
功能:字符串轉(zhuǎn)大寫
- strupper("AbCdEFg")
 - 輸出:ABCDEFG
 
strchar(byte1, byte2, ..)
功能:數(shù)字轉(zhuǎn)字符串
- strchar(97, 98, 99)
 - 輸出:abc
 
strrep(str, nCount)
功能:返回一個指定數(shù)目拼接在一起的字符串
- strrep("hello", 5)
 - 輸出:hellohellohellohellohello
 
ascii(str)
功能:字符串轉(zhuǎn)數(shù)字
注意:若傳入多個字符組成的字符串,只返回***個字符的ascii碼
- ascii("a")
 - ascii("abc")
 - 輸出:97
 
strbyte(str)
功能:字符串轉(zhuǎn)數(shù)字
注意:若傳入多個字符組成的字符串,只返回***個字符的ascii碼
- strbyte("a")
 - strbyte("abc")
 - 輸出:97
 
format(str, "格式化字符串")
功能:返回一個指定格式的格式化字符串
- format("%s is %s ,has %s apples!", "Henry", "farmer", 19)
 
輸出:
- Henry is farmer ,has 19 apples!
 
strfind(str, substr[, nStart])
功能:查找一個字符串在另一個字符串中的位置,參數(shù)3可以指定開始查找的位置
- strfind("aaa hello, mike! hello", "hello", 8)
 
輸出:19 23
gsub(str, perttem, repl[, n])
功能:在str查找等于或類似perttem格式的字符串,用repl替換,參數(shù)4可選,為替換的次數(shù)
注意:該函數(shù)支持字符串匹配操作,返回的第2個值表示替換了多少次
- gsub("hello, world", "%w+", "xxx")
 
輸出:
- xxx, xxx 2
 
調(diào)試庫 debug庫
- getlocal
 - getinfo
 - setcallhook
 - setlinehook
 - setlocal
 
小結(jié):Lua 4.0中關(guān)于函數(shù)學習筆記的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!















 
 
 
 
 
 
 