현재 테이블 인덱스를 나타 내기 위해 table.concat의 arg 2 값을 사용하는 방법이 있습니까?루아 table.concat
예 :
t = {}
t[1] = "a"
t[2] = "b"
t[3] = "c"
X = table.concat(t,"\n")
원하는 테이블 CONCAT (X)의 출력 :
"1 a\n2 b\n3 c\n"
현재 테이블 인덱스를 나타 내기 위해 table.concat의 arg 2 값을 사용하는 방법이 있습니까?루아 table.concat
예 :
t = {}
t[1] = "a"
t[2] = "b"
t[3] = "c"
X = table.concat(t,"\n")
원하는 테이블 CONCAT (X)의 출력 :
"1 a\n2 b\n3 c\n"
간단한 답 : 아니오.
table.concat
은 정말 빠르고 기본적인 것입니다.
그래서 어쨌든 반복해야합니다.
당신은 당신이 할 수있는 과도한 문자열 연결을 피하려면 : 당신은`템플릿 의미하지 않는다
function concatIndexed(tab,template)
template = template or '%d %s\n'
local tt = {}
for k,v in ipairs(tab) do
tt[#tt+1]=template:format(k,v)
end
return table.concat(tt)
end
X = concatIndexed(t) -- and optionally specify a certain per item format
Y = concatIndexed(t,'custom format %3d %s\n')
호 그러나 주위에 일이 :
local n = 0
local function next_line_no()
n = n + 1
return n..' '
end
X = table.concat(t,'\0'):gsub('%f[%Z]',next_line_no):gsub('%z','\n')
나는 생각하지 않는다는 그래서 : 키와 값 사이의 구분 기호가 공백으로되어 있다고 예를 들어 설명하겠습니까?
당신은 당신이 원하는 것을 할 일반적인 매핑 기능을 쓸 수 있습니다 :
function map2(t, func)
local out = {}
for k, v in pairs(t) do
out[k] = func(k, v)
end
return out
end
function joinbyspace(k, v)
return k .. ' ' .. v
end
X = table.concat(map2(t, joinbyspace), "\n")
을 : 형식을 ...'? – Cubic
감사합니다. BTW, 이와 같은 오류가 발견되면 편집 권한이 있으므로 직접 답변을 편집하십시오. – jpjacobs