을 수행 할 수 있습니다 목록을 목록 컨텍스트에 추가하면 첫 번째 항목 만 사용되거나 확장이 목록 컨텍스트의 끝에서 발생하는 경우 모든 항목이 사용됩니다. (Perl-ish 용어로는 미안합니다.)
테이블 생성자 { a(num) }
에서 모든 목록 항목을 캡처 할 수 있습니다. 목록은 목록 컨텍스트의 마지막 항목으로 확장되므로 모든 항목이 사용됩니다.
다른 식으로 돌아 가면 unpack
기능을 사용하여 테이블을 목록으로 줄일 수 있습니다. 그러나 연속 배열에 대해서만 적용되는 표 "길이"개념을 사용합니다. 함수 결과에는 nil
이 포함될 수 있으므로 계산을 통해 표의 항목 수를 측정하고 pairs
함수를 사용하여 표를 반복해야합니다.
local function a(num)
if num == 1 then
return 1
else
return nil, 2
end
end
local function b(num)
if num == 1 then
return 1
else
return nil, 2
end
end
.
local function c(num)
local t = {}
local n = 0
local bOffset = 0
for k, v in pairs({ a(num) }) do
table.insert(t, k, v)
if (k > n) then
n = k
end
if (k > bOffset) then
bOffset = k
end
end
for k, v in pairs({ b(num) }) do
table.insert(t, bOffset + k, v)
if (bOffset + k > n) then
n = bOffset + k
end
end
return unpack(t, 1, n)
end
print(nil,2,nil,2)
print(c(0202))