1、lua實現深拷貝
function deepcopy( obj )
local intable = {};
local function func(obj)
if type(obj) ~= "table" then --判斷表中是否有表
return obj;
end
local newtable = {}; --定義乙個新錶
intable[obj] = newtable; --若表中有表,則先把表給intable,再用newtable去接收內嵌的表
for k,v in pairs(obj) do --把舊表的key和value賦給新錶
newtable[func(k)] = func(v);
end
return setmetatable(newtable, getmetatable(obj))--賦值元表
end
return func(obj) --若表中有表,則把內嵌的表也複製了
end
2、lua實現列印table結構
local function intentstr(level)
local str=" "
for i=1,level do
str = str.." "
endreturn str
endlocal function printtable(tb,last_tb,level)
if level>3 then return end
if level==0 then print(",level+1)
endlast_tb = tb
printtable(v,last_tb,level+1)
print(str.."}")
endend
if level==0 then print("}") end
endtest = }
rawset(test,'aa','aaa')
printtable(test,{},0)
3、生成唯一長度為len字串
function e_utility_getuid(len)
local template = string.rep('x',len-5)
d = io.open("/dev/urandom", "r"):read(4)
math.randomseed(os.time() + d:byte(1) + (d:byte(2) * 256) + (d:byte(3) * 65536) + (d:byte(4) * 4294967296))
local rdmstr = string.gsub(template, "x", function (c)
local v = (c == "x") and math.random(0, 0xf) or math.random(8, 0xb)
return string.format("%x", v)
end)
return string.sub(time,6,10)..rdmstr
end
4、lua實現sleep
local function sleep(n)
os.execute("sleep "..n)
endlocal socket = require("socket")
local function ssleep(n)
socket.select(nil,nil,n)
endlocal i=0
while true do
sleep(1)
print("time:"..os.time())
ssleep(1)
print("time:"..os.time())
end
5、清除table陣列中重複元素
function e_utility_del_dup_elem(tb)
local tmp={}
for key,val in pairs(tb) do
tmp[val]=true
endlocal new_tb = {}
for key,val in pairs(tmp) do
table.insert(new_tb,key)
endreturn new_tb
end
6、陣列刪除指定元素 包含重複的情況
function e_utility_array_del(array, elem)
if not next(array) then return end
table.sort(array)
local pos=1
while true do
if not array[pos] then break end
if array[pos]==elem then table.remove(array,pos)
else pos = pos +1 end
endend
Lua基礎總結
本文總結了lua資料型別,表示式,基本語法。lua單行注釋 多行注釋 全域性變數 不需要宣告,訪問乙個沒有初始化的全域性變數也不會出錯,只是結果是nil。刪除乙個全域性變數,只給他賦值nil,即b nil。lua資料型別 8種 nil,boolean,number,string,undata,fun...
Lua資料總結
lua指令碼是乙個很輕量級的指令碼,也是號稱效能最高的指令碼,用在很多需要效能的地方,比如 遊戲指令碼,nginx,wireshark的指令碼,當你把他的原始碼下下來編譯後,你會發現直譯器居然不到200k,bin sh都要1m,macos平台 而且能和c語言非常好的互動。執行lua是類c的,是大小寫...
Lua語言總結
1 要退出互動模式和直譯器,只需輸入 os.exit 2 在互動模式執行程式塊可以使用函式dofile,這個函式就可以立即執行乙個檔案。應用示例 dofile f mylua mystudylua.lua 3 lua中的識別符號可以是由任意字母 數字和下劃線構成的字串,但不能以數字開頭。4 lua是...