浅 table 复制 Lua 4
Shallow table copy in Lua 4
我正在为使用 Lua 4 的旧视频游戏制作 mod,我需要一种方法来创建输入的 table 的浅表副本。我在网上找到了这个套路:
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 编写的。例如, pairs
函数在 Lua 4 中不存在。此外,该函数不是递归的。我将如何编写在 Lua 4 中工作并且递归的等效例程?谢谢!
[编辑]
已更新 post。
Lua 4 有一个 for 循环 tables.
table for 语句遍历给定 table 的所有对(索引,值)。它具有以下语法:
stat ::= for name `,' name in exp1 do block end
参考Lua4参考手册第4.4.4节
https://www.lua.org/manual/4.0/manual.html#4.4
浅拷贝例程不需要递归。这只会影响通过引用复制的 table 个值,因此它们的所有成员都在船上。
我正在为使用 Lua 4 的旧视频游戏制作 mod,我需要一种方法来创建输入的 table 的浅表副本。我在网上找到了这个套路:
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 编写的。例如, pairs
函数在 Lua 4 中不存在。此外,该函数不是递归的。我将如何编写在 Lua 4 中工作并且递归的等效例程?谢谢!
[编辑]
已更新 post。
Lua 4 有一个 for 循环 tables.
table for 语句遍历给定 table 的所有对(索引,值)。它具有以下语法:
stat ::= for name `,' name in exp1 do block end
参考Lua4参考手册第4.4.4节
https://www.lua.org/manual/4.0/manual.html#4.4
浅拷贝例程不需要递归。这只会影响通过引用复制的 table 个值,因此它们的所有成员都在船上。