浅 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 个值,因此它们的所有成员都在船上。