테이블에 더 많은 사용법을 추가하는 Array 클래스를 만들고 있습니다. 나는 나 두 테이블을 결합 할 수있는 메타 메소드, 전이 : 나는 알고 있어요 당신에게 {5, 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