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

Joe*_*ang 6 lua

对于可变数量的参数,这里是lua.org的一个例子:

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

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

打印("A","B",零,零,"D")

只传入"A"和"B",忽略自第一个零以来的所有参数.因此在这个例子中打印结果是"AB".

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

AB nil nil D
Run Code Online (Sandbox Code Playgroud)

当然,在对代码进行一些修改之后.但我的问题是......最重要的是,即使其中一些是nils,如何得到所有的论点?

Aad*_*hah 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
Run Code Online (Sandbox Code Playgroud)

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

print(show("A", "B", nil, nil, "D"))
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.