루아 테이블 (표)
, 사전 디지털 : 루아 테이블과 같은 다른 유형의 데이터를 작성하는 데 도움이되도록 사용하는 데이터 구조이다.
연관된 배열 루아 테이블에는 배열의 인덱스를 만들기 위해 모든 유형의 값을 사용할 수 있지만,이 값은 전무 아니다.
루아 테이블의 크기는 자신의 필요에 따라 확장 할 수 있습니다 고정되지 않습니다.
루아는 또한 테이블을 통해의 모듈 (모듈), 패키지 (패키지)과 오브젝트 (객체)를 해결하기 위해. 예를 들어, 및 String.format 표시의 경우 인덱스 테이블 문자열 "포맷".
테이블 (표) 구성
생성자는 테이블을 생성하고 초기화하는 표현이다. 루아 테이블은 고유의 강력한 재료입니다. 간단한 생성자는 빈 테이블을 작성하는 데 사용 {}입니다. 직접 배열을 초기화 할 수 있습니다 :
-- 初始化表 mytable = {} -- 指定值 mytable[1]= "Lua" -- 移除引用 mytable = nil -- lua 垃圾回收会释放内存
우리 테이블 요소 세트 후는 B에 동일한 메모리로 다음 A와 B 지점을 지정하면. 세트 전무을 경우, B는 요소의 테이블에 액세스 할 수 있습니다. 당신이에 변수 지점을 지정하지 않으면, 루아의 가비지 콜렉션은 해당 메모리를 정리합니다.
다음은 상황의 상기 설명을 보여
-- 简单的 table mytable = {} print("mytable 的类型是 ",type(mytable)) mytable[1]= "Lua" mytable["wow"] = "修改前" print("mytable 索引为 1 的元素是 ", mytable[1]) print("mytable 索引为 wow 的元素是 ", mytable["wow"]) -- alternatetable和mytable的是指同一个 table alternatetable = mytable print("alternatetable 索引为 1 的元素是 ", alternatetable[1]) print("mytable 索引为 wow 的元素是 ", alternatetable["wow"]) alternatetable["wow"] = "修改后" print("mytable 索引为 wow 的元素是 ", mytable["wow"]) -- 释放变量 alternatetable = nil print("alternatetable 是 ", alternatetable) -- mytable 仍然可以访问 print("mytable 索引为 wow 的元素是 ", mytable["wow"]) mytable = nil print("mytable 是 ", mytable)
상기 코드의 결과로서 실행된다 :
mytable 的类型是 table mytable 索引为 1 的元素是 Lua mytable 索引为 wow 的元素是 修改前 alternatetable 索引为 1 的元素是 Lua mytable 索引为 wow 的元素是 修改前 mytable 索引为 wow 的元素是 修改后 alternatetable 是 nil mytable 索引为 wow 的元素是 修改后 mytable 是 nil
운영 테이블
다음 표는 작업의 일반적인 방법을 보여줍니다
아니오. | 방법 및 목적 |
---|---|
(1) | table.concat (테이블 [9 월 [, [시작, 끝]]]) : CONCAT은 CONCATENATE (체인 링크)의 약어. table.concat () 함수는 지정된 분리 (9월)의 요소 사이에두고 최종 위치로 시작 위치에서 모든 요소의 테이블 배열 부분에 나열된 매개 변수를 지정합니다. |
이 | table.insert (테이블, [POS,] 값) : 어레이 부 테이블의 지정된 위치 (POS) 인서트. 값의 원소이다 순위 파라미터는 어레이의 단부에 선택적이며, 기본값. |
3 | table.maxn (테이블) 모두 양수 최대 키 값 테이블 키 값을 지정한다. 값이 양수이면, 키 요소가 존재하지 않으면 0 반환한다. (Lua5.2이 방법이 존재하지 않는 한,이 문서는 달성하기 위해 사용자 정의 함수를 사용) |
4 | table.remove (테이블 [POS]) 테이블 부분의 배열을 pos의 위치 요소에 위치 반환 후 요소는. 앞으로 이동합니다 순위 매개 변수는 삭제 된 마지막 요소에서 시작, 테이블 길이에 선택 사항이며 기본 설정됩니다. |
(5) | table.sort (테이블 [완]) 오름차순으로 주어진 테이블하십시오. |
다음으로 우리는 이러한 방법의 예를 보면.
표 연결
우리는 두 테이블을 연결하는 CONCAT () 메서드를 사용할 수 있습니다 :
fruits = {"banana","orange","apple"} -- 返回 table 连接后的字符串 print("连接后的字符串 ",table.concat(fruits)) -- 指定连接字符 print("连接后的字符串 ",table.concat(fruits,", ")) -- 指定索引来连接 table print("连接后的字符串 ",table.concat(fruits,", ", 2,3))
위의 코드의 출력 결과를 실행합니다 :
连接后的字符串 bananaorangeapple 连接后的字符串 banana, orange, apple 连接后的字符串 orange, apple
삽입 및 제거
다음 예는 테이블 삽입 및 제거 작업을 보여줍니다
fruits = {"banana","orange","apple"} -- 在末尾插入 table.insert(fruits,"mango") print("索引为 4 的元素为 ",fruits[4]) -- 在索引为 2 的键处插入 table.insert(fruits,2,"grapes") print("索引为 2 的元素为 ",fruits[2]) print("最后一个元素为 ",fruits[5]) table.remove(fruits) print("移除后最后一个元素为 ",fruits[5])
위의 코드의 출력 결과를 실행합니다 :
索引为 4 的元素为 mango 索引为 2 的元素为 grapes 最后一个元素为 mango 移除后最后一个元素为 nil
표 정렬
다음의 예는 테이블 정렬에 대한 정렬 () 사용 방법을 보여줍니다
fruits = {"banana","orange","apple","grapes"} print("排序前") for k,v in ipairs(fruits) do print(k,v) end table.sort(fruits) print("排序后") for k,v in ipairs(fruits) do print(k,v) end
위의 코드의 출력 결과를 실행합니다 :
排序前 1 banana 2 orange 3 apple 4 grapes 排序后 1 apple 2 banana 3 grapes 4 orange
표 최대
Lua5.2이 방법이 존재하지 않는 후 table.maxn, 우리는 table_maxn 방법을 정의합니다.
다음 예는 최대 값 표를 획득하는 방법을 보여줍니다
function table_maxn(t) local mn = 0 for k, v in pairs(t) do if mn < k then mn = k end end return mn end tbl = {[1] = "a", [2] = "b", [3] = "c", [26] = "z"} print("tbl 长度 ", #tbl) print("tbl 最大值 ", table_maxn(tbl))
위의 코드의 출력 결과를 실행합니다 :
tbl 长度 3 tbl 最大值 26