Lua调用table.Merge合并表触发attempt to call a nil value错误求助
问题原因
标准Lua原生库的table模块没有内置Merge方法,你当前是用原生lua54运行脚本,调用不存在的table.Merge字段时取值为nil,将nil作为函数调用就触发了你看到的报错。
补充说明:你目录路径包含GMOD相关标识,GMOD的自定义Lua环境确实封装了table.Merge方法,如果你把这段脚本放到GMOD服务端/客户端执行可以正常运行,只有单独用原生Lua运行时才会缺少该方法。
解决方案
你可以自己手动实现数组类型表的合并逻辑,修改后的完整代码如下:
table1 = { "Apple", "Orange", } table2= { "je", } -- 手动实现数组合并逻辑,将table2的所有元素追加到table1末尾 for _, value in ipairs(table2) do table.insert(table1, value) end print( table.concat(table1," ") )
运行后输出结果为:Apple Orange je,符合你预期的合并效果。
如果需要封装成通用方法可以这么写:
-- 封装通用的数组合并方法,直接修改原dest表 function table.merge_arr(dest, src) for _, v in ipairs(src) do table.insert(dest, v) end return dest end -- 调用示例 table.merge_arr(table1, table2)
内容的提问来源于stack exchange,提问作者codeledger
相关产品推荐
相关产品推荐

