當展開列表到列表上下文中,或者只使用第一個項目,或者如果擴展發生在列表上下文的末尾,則使用所有項目。 (對不起,對於Perl-ish術語。)
您可以捕獲表構造函數{ a(num) }
中的所有列表項。由於列表作爲列表上下文中的最後一個項目被擴展,所以使用所有項目。
回過頭來,您可以使用unpack
函數將表格減少到列表中。然而,它使用表格「長度」概念,它只適用於連續序列數組。由於函數結果可能包含任何地方的nil
,因此必須通過計數來測量表中的項目數,然後使用pairs
函數對錶進行迭代。
local function a(num)
if num == 1 then
return 1
else
return nil, 2
end
end
local function b(num)
if num == 1 then
return 1
else
return nil, 2
end
end
。
local function c(num)
local t = {}
local n = 0
local bOffset = 0
for k, v in pairs({ a(num) }) do
table.insert(t, k, v)
if (k > n) then
n = k
end
if (k > bOffset) then
bOffset = k
end
end
for k, v in pairs({ b(num) }) do
table.insert(t, bOffset + k, v)
if (bOffset + k > n) then
n = bOffset + k
end
end
return unpack(t, 1, n)
end
print(nil,2,nil,2)
print(c(0202))