テーブルにさらに使用法を追加する Array クラスを作成しています。2 つのテーブルを結合できるメタメソッドがあります。例:
Array(5) .. Array(6, 10) は {5, 6, 10} を与えるはずです
これを行うために 2 つのループを使用できることは承知していますが、コードをできるだけクリーンで効率的なものにしようとしています。アンパックで問題が発生しました。2 つのテーブルを連結しようとしていますが、すべての値が含まれていません。ここに私のコードと出力があります:
local Array = {}
Array.__index = Array
function Array.__concat(self, other)
return Array.new(unpack(self), unpack(other))
end
function Array:concat(pattern)
return table.concat(self, pattern)
end
function Array.new(...)
return setmetatable({...}, Array)
end
setmetatable(Array, {__call = function(_, ...) return Array.new(...) end})
local x = Array(5, 12, 13) .. Array(6, 9) --concatenate two arrays
print(x:concat(", "))
OUTPUT: 5, 6, 9 (I want it to be "5, 12, 13, 6, 9")