簡體   English   中英

Lua 中有趣的行為“...”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM