如何将Lua表中的值迁移至该表的子表中?
Lua表结构迁移的简便实现方法
你可以通过两种方式实现需求,分别是修改原表和创建新表(保留原表),具体代码如下:
方法一:直接修改原表
这种方式会直接改动原始表的结构,将原有键值对迁移到内部的letters子表,再添加otherStuff空表:
local original = { a = 1, b = 2, c = 3, } -- 初始化letters子表并迁移数据 original.letters = {} for k, v in pairs(original) do if k ~= "letters" then original.letters[k] = v original[k] = nil -- 删除原表中的旧键 end end -- 添加otherStuff空表 original.otherStuff = {}
方法二:创建新表(不修改原表)
如果需要保留原始表的结构,可以新建一个目标表,将原表数据迁移过去:
local original = { a = 1, b = 2, c = 3, } local newTable = { letters = {}, otherStuff = {} } -- 迁移原表所有数据到letters子表 for k, v in pairs(original) do newTable.letters[k] = v end
补充说明
如果原表带有元表(metatable),需要额外处理元表的继承逻辑;若是普通的键值对表,上述两种方法都能快速实现需求。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

