Latest web development tutorials

루아 테이블 (표)

, 사전 디지털 : 루아 테이블과 같은 다른 유형의 데이터를 작성하는 데 도움이되도록 사용하는 데이터 구조이다.

연관된 배열 루아 테이블에는 배열의 인덱스를 만들기 위해 모든 유형의 값을 사용할 수 있지만,이 값은 전무 아니다.

루아 테이블의 크기는 자신의 필요에 따라 확장 할 수 있습니다 고정되지 않습니다.

루아는 또한 테이블을 통해의 모듈 (모듈), 패키지 (패키지)과 오브젝트 (객체)를 해결하기 위해. 예를 들어, 및 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