2017-09-01 96 views
1

所以我Lua代碼看起來是這樣的:Lua:在返回表的函數之後可以有逗號嗎?

function makeTable() 
    return {1,2,3} 
end 

table = { 
    makeTable(), 
    {4,5,6} 
} 

table結果應該是{{1, 2, 3}, {4, 5, 6}}

我很在意makeTable()後的逗號。在Lua中,對於返回表的函數,這是否有效?還是有更好的方法讓返回表的函數成爲表的第一項?

回答

1

這是行得通的。您的代碼是否存在任何問題或者您正在努力實現的目標?或者,如果你願意,你可以這樣做:

function makeTable() 
    return {{1,2,3}} 
end 

t = maketable() 
table.insert(t, {4,5,6}) 
+0

因爲我對Lua不太熟悉(在一個函數看起來很奇怪之後有一個逗號),並且我正在修改Factorio(使用Lua作爲其mod API),並且需要創建大量相關項目和食譜。 – bigyihsuan

+0

你可以用LUA做非常邪惡的事情,它有點像Javascript,你可以濫用代碼中的垃圾,並通過奇怪的滑稽動作使其工作。 如果您有多個項目要使用相同的模式創建,您也可以添加參數,例如: 'function makeTable(additionalpart){return {{1,2,3},additionalpart} end' 然後調用它as: 't = makeTable({4,5,6})' 我也建議你在你的變量不應該暴露在別處時使用'local'前綴。最後,'table'用於表格函數,這是我以前編輯的一部分。使用別的東西:) –

0

這是完全有效Lua。嘗試添加這對代碼的底部:

io.write("{") 
for i,v in ipairs(table) do 
    io.write("{") 
    for j,m in ipairs(v) do 
     io.write(m) 
     io.write(",") 
    end 
    io.write("},") 
end 
print("}") 

你會看到它打印:{{1,2,3,},{4,5,6,},}。您正在爲您的二維數組正確添加一個數組。

0

你可以做that.But我想這將是清潔:

function makeTable() 
    return {1,2,3} 
end 

local t = {} 
table.insert(t, makeTable()) 
table.insert(t, {4, 5, 6}) 
0

這是100%的罰款。

你寫道:「在函數後面加一個逗號看起來很奇怪」。那麼,這個逗號與表格表達式中的逗號完全一樣:它將一個表值與下一個表值分開。

換句話說,{ makeTable(), {4,5,6} }是完全一樣{1,2},除了它具有在適當位置的1makeTable(),和{4,5,6}代替2

相關問題