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

如何实现可反转vararg可变参数的reverse函数?

实现支持包含nil的可变参数反转函数

在Lua中直接处理带nil的可变参数时,普通参数收集会被nil截断,所以要借助table.pack完整保留所有参数(包括长度信息),以下是满足需求的reverse函数实现:

function reverse(...)
    local args = table.pack(...)
    local reversed = {}
    for i = args.n, 1, -1 do
        reversed[#reversed + 1] = args[i]
    end
    return table.unpack(reversed, 1, args.n)
end

关键说明:

  • table.pack(...) 将可变参数打包为table,同时用n字段记录参数实际总数,避免nil导致的长度丢失。
  • 倒序遍历原参数表,将元素依次存入新表完成反转。
  • table.unpack(reversed, 1, args.n) 明确指定解包范围,确保所有元素(包括中间的nil)都能作为可变参数返回。

测试验证:

local val1, val2, val3, val4, val5 = reverse(1, 2, 3, nil, 5)
print(val1, val2, val3, val4, val5) -- 输出:5    nil    3    2    1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:02:03