Eric's Blog 时光荏苒,岁月如梭

Lua 可变参数

2025-08-24
Eric Wong

在 Lua 中遇到需要使用可变参数时,通常这样处理:

local function add(...)
    local l = 0
    for k, v in ipairs({...}) do
        l = l + v
    end
    return l
end

print(add(1, 2, 3, 4))

-- 输出:
-- 10

但是,如果传入的参数中间有 nil 那么,结果就不是预期的了:

local function add(...)
    local l = 0
    for k, v in ipairs({...}) do
        l = l + v
    end
    return l
end

print(add(1, 2, nil, 4))
-- 输出:
-- 3

因此,在遍历参数时,推荐使用 select 函数:

local function add(...)
    local l = 0
    for i = 1, select('#', ...), 1 do
        l = l + (select(i, ...) or 0)
    end
    return l
end

print(add(1, 2, nil, 4))
-- 输出:
-- 7

参考文章


版权声明:本文为原创文章,遵循 署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)版权协议,转载请附上原文出处链接和本声明。


分享到:

评论

目录