Я создаю класс Array, который добавляет больше использования таблиц. У меня есть метаметод, что позволяет мне объединить две таблицы, напр:Как исправить эту проблему с распаковкой?
Array (5) .. Array (6, 10) должны дать вам {5, 6, 10}
Я знаю, что я может использовать две петли для этого, но я стараюсь сделать мой код максимально чистым и эффективным. Я столкнулся с проблемой с распаковкой. Я пытаюсь объединить две таблицы, но это не включает все значения. Вот мой код и вывод:
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")
Только маленький совет, 'table.concat' может принимать больше параметров. – hjpotter92