在Lua中,如何获取所有参数,包括可变数量的参数的nil?

时间:2014-03-02 04:43:43

标签: lua

对于可变数量的参数,以下是lua.org的示例:

function print (...)
    for i,v in ipairs(arg) do
        printResult = printResult .. tostring(v) .. "\t"
    end
    printResult = printResult .. "\n"
end

从上面的示例代码中,如果我打电话

print(“A”,“B”,nil,nil,“D”)

只有“A”&传入“B”,忽略自第一个零以来的所有参数。因此,在此示例中打印结果为“AB”。

是否可以获得包括nils在内的所有参数?例如,我可以检查参数是否为nil,如果是,我可以将“nil”打印为字符串。所以在这个例子中,我实际上想要打印

AB nil nil D
当然,在对代码进行一些修改之后

。但我的问题是......最重要的是,即使其中一些是nils,如何得到所有的论点?

1 个答案:

答案 0 :(得分:7)

你试过了吗?

function table.pack(...)
    return { n = select("#", ...); ... }
end

function show(...)
    local string = ""

    local args = table.pack(...)

    for i = 1, args.n do
        string = string .. tostring(args[i]) .. "\t"
    end

    return string .. "\n"
end

现在您可以按如下方式使用它:

print(show("A", "B", nil, nil, "D"))

希望有所帮助。