我有以下unpack()函数:

function unpack(t, i)
    i = i or 1
    if t[i] then
        return t[i], unpack(t, i + 1)
    end
end


我现在在以下测试代码中使用它:

t = {"one", "two", "three"}
print (unpack(t))
print (type(unpack(t)))
print (string.find(unpack(t), "one"))
print (string.find(unpack(t), "two"))


输出:

one two three
string
1   3
nil


让我感到困惑的是最后一行,为什么结果nil

最佳答案

如果一个函数返回多个值,除非将其用作最后一个参数,否则仅采用第一个值。

在您的示例中,string.find(unpack(t), "one")string.find(unpack(t), "two")"two""three"被丢弃,它们等效于:

string.find("one", "one")  --3




string.find("one", "two")  --nil

10-06 04:53