我正在为一个使用Lua4的旧视频游戏做一个mod,我需要一种方法来创建一个输入表的浅拷贝。我在网上找到了这个例程:
http://lua-users.org/wiki/CopyTable
function shallowcopy(orig)
local orig_type = type(orig)
local copy
if orig_type == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[orig_key] = orig_value
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end但是,该例程是为更高版本的Lua编写的。例如,在Lua4中不存在pairs函数,而且该函数不是递归的。我如何编写一个在Lua4中工作并且是递归的等效例程呢?谢谢!
编辑
更新帖子。
发布于 2017-08-23 05:59:31
Lua4有一个for表循环。
table for语句遍历给定表的所有对(索引、值)。它的语法如下:
stat ::= for name `,' name in exp1 do block end请参阅Lua 4参考手册第4.4.4节
https://www.lua.org/manual/4.0/manual.html#4.4
浅复制例程不需要是递归的。这只会影响通过引用复制的表值,因此它们的所有成员都在板上。
https://stackoverflow.com/questions/45826758
复制相似问题