Lua 의 table 학습 노트

6064 단어
table 은 Lua 에서 중요 한 데이터 구조 로 다른 데이터 구조의 기초 라 고 할 수 있 습 니 다. 일반적인 배열, 기록, 선형 표, 대기 열, 집합 등 데이터 구 조 는 table 로 표시 할 수 있 고 심지어 전체 변수 ( G), 모듈, 메타 테이블 (metatable) 등 중요 한 Lua 요소 도 table 의 구조 입 니 다.table  강하 고 신기 한 것 이다.
table 특성
이전에 Lua 데이터 형식 을 소개 할 때 table 의 일부 특성 도 말 했 습 니 다. 간단하게 다음 과 같이 열거 합 니 다 (상세 한 내용 은 이전의 소 개 를 볼 수 있 습 니 다).
1. table 은 '관련 배열' 입 니 다. 배열 의 색인 은 숫자 나 문자열 2. table 의 기본 초기 색인 일 수 있 습 니 다. 보통 1 로 시작 합 니 다. 3. table 의 변 수 는 주소 참조 일 뿐 table 의 작업 에 데이터 영향 을 주지 않 습 니 다. 4. table 은 길이 가 고정 되 지 않 고 새로운 데이터 가 삽입 되 었 을 때 길이 가 5. table 의 방법 함수 가 자동 으로 증가 합 니 다.
Lua 5.2.2 에는 다음 과 같은 7 가지 table 작업 방법 이 내장 되 어 있 습 니 다.
concat
함수 table. concat 는 표 의 모든 요 소 를 구분자 (separator) 로 연결 하여 조합 하 는 데 사 용 됩 니 다. 용법:
 
  
table.concat(table, sep,  start, end)

위 에 table 을 제외 하고 sep, start, end 세 개의 매개 변 수 는 모두 선택 할 수 있 고 순서대로 읽 을 수 있 습 니 다. 입력 이 지정 되 지 않 으 면 함수 concat 는 기본 값 (구분자 sep 의 기본 값 은 빈 문자 이 고 start 의 기본 값 은 1 이 며 end 의 기본 값 은 배열 부분의 총 길이) 으로 실 행 됩 니 다.
 
  
local tbl = {"apple", "pear", "orange", "grape"}
 
print(table.concat(tbl))
 
print(table.concat(tbl, "、"))
 
print(table.concat(tbl, "、", 2))
 
print(table.concat(tbl, "、", 2, 3))

밀집 형 문자 와 연결 에 있어 table. concat 는 '...' 로 연결 하 는 것 보다 효율 적 입 니 다. 다음은 time 으로 테스트 하 는 효과 입 니 다.
 
  
local str = {}
for i = 1, 10000 do
    str[i] = "str"
end
print(table.concat(str))
--real  0m0.005s
--user  0m0.003s
--sys   0m0.002s
 
  
local str = ""
for i = 1, 10000 do
    str = str .. "str"
end
print(str)
--real  0m0.041s
--user  0m0.037s
--sys   0m0.002s

insert
함수 table. insert 는 table 의 지정 한 위치 (pos) 에 새로운 요 소 를 삽입 하 는 데 사 용 됩 니 다. 용법:
 
  
table.insert(table, pos value)

인자 pos 는 선택 할 수 있 습 니 다. 기본 값 은 table 끝 위치 입 니 다.
 
  
local tbl = {"apple", "pear", "orange", "grape"}
 
table.insert(tbl, "watermelon")
print(table.concat(tbl, "、"))
 
table.insert(tbl, 2, "watermelon")
print(table.concat(tbl, "、"))

maxn
함수 table. maxn 은 table 의 최대 정수 색인 값 을 되 돌려 줍 니 다. 용법:
 
  
table.maxn (table)

정수 색인 값 이 존재 하지 않 으 면 0 으로 돌아 갑 니 다.
 
  
local tbl = {"apple", "pear", "orange", "grape"}
print(table.maxn(tbl))
 
local tbl = {"apple", "pear", "orange", "grape", [26] = "watermelon"}
print(table.maxn(tbl))
 
local tbl = {[-1] = "apple", [-2] = "pear", [-3] = "orange", [-4] = "grape"}
print(table.maxn(tbl))

pack
함수 table. pack 은 1 부터 색인 을 가 져 오 는 매개 변수 표 table 이 며, 이 table 에 대해 필드 n 을 미리 정의 하여 표 의 길 이 를 표시 합 니 다. 용법:
 
  
table.pack(・・・)

이 함 수 는 들 어 오 는 함수 의 인 자 를 가 져 오 는 데 자주 사용 된다.
 
  
function table_pack(param, ...)
    local arg = table.pack(...)
    print("this arg table length is", arg.n)
    for i = 1, arg.n do
        print(i, arg[i])
    end
end
 
table_pack("test", "param1", "param2", "param3")

remove
함수 table. remove 는 table 의 어떤 값 을 삭제 하 는 데 사 용 됩 니 다. 용법:
 
  
table.remove (list [, pos])

매개 변수 pos 를 선택 할 수 있 습 니 다. 기본적으로 table 의 마지막 요 소 를 삭제 하고 매개 변수 pos 의 유형 은 디지털 number 형식 일 수 있 습 니 다.
 
  
local tbl = {"apple", "pear", "orange", "grape"}
table.remove(tbl, 2)
print(table.concat(tbl, "、"))
 
table.remove(tbl)
print(table.concat(tbl, "、"))

sort
함수 table. sort 는 table 의 요 소 를 정렬 하 는 데 사 용 됩 니 다. 용법:
 
  
table.sort(table, comp)

매개 변수 comp 는 정렬 대비 함수 입 니 다. 두 개의 매개 변수 인 param 1, param 2 가 있 습 니 다. 만약 param 1 이 param 2 앞 에 있 으 면 정렬 함 수 는 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
 
  
local tbl = {"apple", "pear", "orange", "grape"}
local sort_func1 = function(a, b) return a > b end
table.sort(tbl, sort_func1)
print(table.concat(tbl, "、"))
 
local sort_func2 = function(a, b) return a < b end
table.sort(tbl, sort_func2)
print(table.concat(tbl, "、"))

파라미터 comp 를 선택 할 수 있 습 니 다. comp 가 부족 한 경우 표 에 대해 오름차 순 으로 정렬 합 니 다.
 
  
local tbl = {"apple", "pear", "orange", "grape"}
table.sort(tbl)
print(table.concat(tbl, "、"))

unpack
함수 table. unpack 은 table 의 요 소 를 되 돌려 주 는 데 사 용 됩 니 다. 용법:
 
  
table.unpack(table, start, end)

매개 변수 start 는 되 돌아 오기 시작 하 는 요소 의 위치 입 니 다. 기본 값 은 1 입 니 다. 매개 변수 end 는 마지막 요소 의 위 치 를 되 돌려 줍 니 다. 기본 값 은 table 의 마지막 요소 의 위치 입 니 다. 매개 변수 start, end 는 모두 선택 할 수 있 습 니 다.
 
  
local tbl = {"apple", "pear", "orange", "grape"}
print(table.unpack(tbl))
 
local a, b, c, d = table.unpack(tbl)
print(a, b, c, d)
 
print(table.unpack(tbl, 2))
print(table.unpack(tbl, 2, 3))

좋은 웹페이지 즐겨찾기