You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua中将table作为函数参数传递且table需在函数内部创建的实现问题

你提供的参考代码无法输出预期内容,原因是函数内部第一行contents = {}直接覆盖了外部传入的table参数,不管调用时传入什么内容,最终操作的都是新创建的空表,因此table.concat的输出为空。

如果你要求contents表必须在函数内部作用域创建,同时调用函数时可以直接传入字符串不需要手动构造table,可以用Lua可变参数特性实现,代码如下:

-- 函数定义
function func(...)
    -- *contents表完全在函数内部作用域创建*,接收所有传入的字符串参数
    local contents = {...}
    print(table.concat(contents, ' '))
end

-- 调用时直接传入字符串即可,无需手动构造table
func('content1', 'content2', 'content3')

执行上述代码输出结果为:content1 content2 content3,符合预期。

如果你需要保留调用时传入table字面量的写法,同时要求内部创建contents表做数据拷贝、不修改外部原始数据,也可以用如下实现:

function func(origin_contents)
    -- 内部创建新的contents表,复制传入的table内容
    local contents = {}
    for _, v in ipairs(origin_contents) do
        table.insert(contents, v)
    end
    print(table.concat(contents, ' '))
end

-- 调用时传入构造好的table字面量
func({'content1', 'content2', 'content3'})

内容的提问来源于stack exchange,提问作者user16999379

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:45:04