我的問題是如何(或者如果)可以將兩個值插入到lua表中。Lua將多個變量插入到表中
我得到一個返回函數(值的變量數)
function a(x, y)
return x, y
end
,並且會插入點到一個表,
function b(x, y)
table.insert(myTable, x, y)
end
所以,我怎樣才能讓另一個功能,那我可以調用具有可變數量參數的函數b,並將它們全部插入到我的表中?
我的問題是如何(或者如果)可以將兩個值插入到lua表中。Lua將多個變量插入到表中
我得到一個返回函數(值的變量數)
function a(x, y)
return x, y
end
,並且會插入點到一個表,
function b(x, y)
table.insert(myTable, x, y)
end
所以,我怎樣才能讓另一個功能,那我可以調用具有可變數量參數的函數b,並將它們全部插入到我的表中?
如果函數的最後一個參數是...
(稱爲可變參數函數),則Lua解釋器會將任何額外參數放入...
。您可以使用{...}
將其轉換爲表格,並將鍵/值複製到名爲myTable
的全局表格中。這是你的功能是什麼樣子:
function b(...)
for k, v in pairs({...}) do
myTable[k] = v
end
end
b(1, 2) -- {[1] = 1, [2] = 2} is added to myTable
你應該取決於你是否要替換,合併或追加元素融入myTable
調整的功能。
的select
功能運行在可變長參數...
function b(...)
for i = 1, select('#',...) do
myTable[#myTable+1] = select(i,...)
end
end
例如,
> myTable = {'a','b'}
> b('c','d')
> for i = 1, #myTable do print(myTable[i]) end
a
b
c
d
>
稍作說明,調用'b(1,2,nil,4)'產生表[{[1] = 1,[2] = 2,[3] = 4}'。根據要求,它可以是好的,也可以是不好的。 – Ryan
謝謝你指出,@瑞恩。 –
作爲當前寫入,函數'B'在位置'x'插入值'y'。這是你的意圖嗎?如果你想插入多個值到表中,你必須多次調用'table.insert'。 [本頁](http://www.luafaq.org/#T1.23)描述瞭如何處理函數的可變數量的參數;這有幫助嗎? – Miles