[英]Amusing behavior '...' in 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
返回多個值。 在Lua 5.2 參考手冊的第 3.4 點下,它說:
如果將表達式用作表達式列表的最后(或唯一)元素,則不進行任何調整(除非將表達式括在括號中)。 在所有其他上下文中,Lua 將結果列表調整為一個元素,要么丟棄除第一個值之外的所有值,要么在沒有值時添加一個 nil。
我確實花了一段時間才弄明白,這是你在那里問的一個好問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.