2014-06-20 5 views
1

나는 여러 행으로 이루어진 표와 각 행에 가변 개수의 열로 이루어진 표가 있습니다. I (예를 들어) 1 라인에 추가 할 경우테이블 행의 끝에 자동으로 문자열을 추가하는 방법

나는 새 행에 데이터를 추가하려면, 난 그냥

table[#table+1] = {['d1'] = data, ['d2'] = data, ... } 

을 지금 내가하고 싶은 것입니다 :

table[1] = {['d' .. #columns+1] = data} 

제외하고 작동하지 않으며 해결책을 찾을 수 없습니다.

내 문제는 내 코드가 이미 존재하는 행에 데이터를 추가 할 때 기존 데이터를 덮어 쓰고 싶지 않다는 것입니다.

예를 들어 이는 현재 테이블의 하나 개의 라인에 대한 결과이다

- 표 {4} {[ "D3"= 154.04},

대신 'd1', 'd2', 그리고 마지막으로 'd3'을 가졌을 때 나는 'd3'만을가집니다.

+1

제목을 태그 할 필요가 없습니다. – lhf

답변

1

코드는

table[1] = {['d' .. #columns] = data}

오른쪽 표와 table[1]에서 값을 대체합니다.

대신을 시도해보십시오 같은 질문이있을 수 있습니다 사람들을 위해

table[1]['d' .. #columns] = data

+0

#columns 대신 무엇을 넣을 지 모르기 때문에 "전역 '열 (길이가 0 인 값)을 가져 오려고합니다."오류가 발생합니다. #columns를 행의 끝에 새 데이터를 넣을 수있는 무언가로 대체하는 방법은 무엇입니까? – lixir

+1

'table'의 인덱스 1에있는 테이블에 엔트리를 추가하려고하면'table [1] [# table [1] + 1] = {...}'과 같이 될 것입니다. –

+0

"길이 필드 가져 오기"오류가 발생합니까?'(nil 값) " – lixir

0

가, 여기에 내가 온 가장 가까운 답변입니다 :

# 연산자는 정수 키를 계산 . 그래서 # 내 문제는 테이블 [p1]과 같은 문자열 키를 포함하는 모든 테이블을 계산하지 않습니다.

function tlength(T) 
    local count = 0 
    for _ in pairs(T) do count = count + 1 end 
    return count 
end 

이제 I 열에/서브 칼럼의 항목의 수를 카운트하고 추가 할 수 I는 다음과 같은 기능을 이용하여 해결.

숫자 인덱스를 사용할 때의 문제점은 코드를 읽을 수 없게 만들었고, 무엇이 무엇인지 모릅니다. 이것으로 나는 여전히 문자열 인덱스를 사용할 수 있고 그것을 계산할 수 있습니다. 그것은 절충점입니다. 하나 이상의 함수 또는 # 연산자.

건배

관련 문제