2
這不是問題。只是Lua很棒。Lua中有趣的行爲'...'
t = {1, 2, 3}
print(table.unpack(t)) -->1 2 3
print(0, table.unpack(t)) -->0 1 2 3
print(table.unpack(t), 4) -->1 4
什麼?
這不是問題。只是Lua很棒。Lua中有趣的行爲'...'
t = {1, 2, 3}
print(table.unpack(t)) -->1 2 3
print(0, table.unpack(t)) -->0 1 2 3
print(table.unpack(t), 4) -->1 4
什麼?
的問題歸結爲變量分配值,讓我簡化了問題:
function ret_1_2_3()
return 1, 2, 3
end
f, g, h, i = 0, ret_1_2_3()
print(f,g,h,i) --> 0 1 2 3
f, g, h, i = ret_1_2_3(), 4
print(f,g,h,i) --> 1 4 nil nil
你不必給變量使用時的名稱「...」,但它遵循同樣的規則和table.unpack
返回多個值。在根據點3.4 Lua 5.2 Reference Manual它說:
如果一個表達式被用作最後一個(或唯一的)表達式列表的元素,則沒有調整的情況下(除非表達被括號括起來)。在所有其他情況下,Lua會將結果列表調整爲一個元素,要麼丟棄除第一個元素之外的所有值,要麼在沒有值的情況下添加單個零。
我確實花了一段時間才弄清楚,這是你問的一個很好的問題。