1

我正在为使用 Lua 4 的旧视频游戏制作模组,我需要一种方法来创建输入表的浅表副本。我在网上找到了这个程序:

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 中工作并且是递归的等效例程?谢谢!

[编辑]

更新帖子。

4

1 回答 1

2

Lua 4 有一个用于表的 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

浅拷贝例程不需要是递归的。这只会影响通过引用复制的表值,因此它们的所有成员都在船上。

于 2017-08-22T21:59:31.110 回答