gpt4 book ai didi

Lua unpack() 乱七八糟的参数

转载 作者:行者123 更新时间:2023-12-04 14:43:31 27 4
gpt4 key购买 nike

我有这个测试函数,它只是打印传递给它的值

function test1(...)
for k, v in ipairs(arg) do
print(v)
end
end

function test2(...)
for k, v in pairs(arg) do
print(v)
end
end

-- GOOD behavior
test1(1, 2, 3, 4) -- produces 1 2 3 4
test2(1, 2, 3, 4) -- produces 1 2 3 4

-- BAD behavior
test1( unpack({1,2}), 3, 4) -- produces 1 3 4
test2( unpack({1,2}), 3, 4) -- produces 1 3 4 3

有人可以向我解释这种行为吗?

最佳答案

此行为并非特定于 unpack .
Lua Reference Manual说:

"Both function calls and vararg expressions can result in multiple values. If a function call is used as a statement (see §3.3.6), then its return list is adjusted to zero elements, thus discarding all returned values. If an expression is used as the last (or the only) element of a list of expressions, then no adjustment is made (unless the expression is enclosed in parentheses). In all other contexts, Lua adjusts the result list to one element, either discarding all values except the first one or adding a single nil if there are no values."



(我的重点)

关于Lua unpack() 乱七八糟的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29892079/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com