LUA 中實現table表的深拷貝例項

2021-07-24 23:27:02 字數 679 閱讀 2118

function deepcopy( obj )	

local intable = {};

local function func(obj)

if type(obj) ~= "table" then --判斷表中是否有表

return obj;

endlocal newtable = {}; --定義乙個新錶

intable[obj] = newtable; --若表中有表,則先把表給intable,再用newtable去接收內嵌的表

for k,v in pairs(obj) do --把舊表的key和value賦給新錶

newtable[func(k)] = func(v);

endreturn setmetatable(newtable, getmetatable(obj))--賦值元表

endreturn func(obj) --若表中有表,則把內嵌的表也複製了

endt1 =

t2 = deepcopy(t1); --深拷貝

t3 = t1; --淺拷貝

print(t1)

print(t2)

print(t3)

for i,v in pairs(t2) do

print(i,v);

end

lua中實現table的列印

剛學lua不久,導師布置的乙個作業,實現乙個能處理table的print evn lua 5.1 function prettystring for key,value in pairs doprettyonestring value endend function prettyonestring ...

lua中利用table表模擬switch

首先定義乙個表 switch 然後定義各個分支 switch 1 function end switch a function end 然後呼叫 switch var 記得後面的 不要忘記哦 o 我們這裡舉個簡單例子,把月份轉換成漢字形式 switch switch 1 function retur...

Lua中table的長度

官方文件是這麼描述 的 取長度操作符寫作一元操作 字串的長度是它的位元組數 就是以乙個字元乙個位元組計算的字串長度 table t 的長度被定義成乙個整數下標 n 它滿足 t n 不是nil而 t n 1 為nil 此外,如果 t 1 為nil,n 就可能是零。對於常規的陣列,裡面從 1 到 n 放...