nil이 아닌 모든 유형의 값을 저장하는 테이블 데이터 형식은 nil, 숫자, 1>문자열1>, 4>함수4>, 및 기타 테이블을 포함합니다. 쿼리 테이블을 만들기 위해 7>Curly Braces7>를 사용
-- 변수 "t"에 할당된 빈 테이블 생성local t = {}print(t) -- {}
테이블을 배열 또는 사전 으로 사용할 수 있습니다. 배열은 인덱스 순으로 숫자의 목록을 사용하지만 사전은 문자열, 문자열 및 개체를 인덱스로 사용할 수 있습니다.
For more information on built-in functions for working with tables, see the table library.
배열
배열은 특수 권한을 가진 플레이어 그룹과 같은 데이터 컬렉션을 저장하는 데 유용합니다.
배열 생성
Luau 테이블을 사용하여 배열을 생성하려면 값을 쉼표로 구분된 순차적 순서로 선언합니다.
-- 3개의 항목이 있는 배열 생성local testArray = {"A string", 3.14159, workspace.Camera}print(testArray)
배열에서 읽기
배열에서 읽으려면 참조 후에 스퀘어 따옴표 쌍을 추가하고 요소 내의 인덱스 번호를 지정합니다([pos]):
-- 3개의 항목이 있는 배열 생성local testArray = {"A string", 3.14159, workspace.Camera}print(testArray[1]) -- 문자열print(testArray[2]) -- 3.14159print(testArray[3]) -- Camera
배열에 작성
인덱스에 있는 배열의 값을 정의하거나 다시 작성하려면 [index] 다음에 = 및 값을 입력합니다.
local testArray = {"A string", 3.14159, workspace.Camera}testArray[2] = 12345testArray[4] = "New string"print(testArray[2]) --12345print(testArray[4]) -- New string
배열 반복
배열을 반복하려면 for 루프를 사용할 수 있습니다. 배열에 숫자 인덱스가 있기 때문에 for 루프를 사용하여 배열 길이( # array )까지 수를 세는 수학적 2>for2> 루프를 사용할 수 있습니다( 5>for5> 에서 시작).
local testArray = {"A string", 3.14159, workspace.Camera, "New string"}-- 일반 반복 사용for index, value in testArray doprint(index, value)end-- 배열 길이 연산자를 사용하여 반복(#)for index = 1, #testArray doprint(index, testArray[index])end--[[ 결과 출력:1 A string2 3.141593 Camera4 New string1 A string2 3.141593 Camera4 New string]]
아이템 삽입
배열의 끝 에 아이템을 삽입하는 두 가지 내장 방법이 있습니다.
- 배열 및 항목 값에 대한 참조를 Luau의 table.insert() 함수에 전달합니다.
- 배열에 array[#array+1] 구문을 사용하여 새 항목을 추가합니다.
local testArray = {"A string", 3.14159}table.insert(testArray, "New string")testArray[#testArray+1] = "Another new string"print(testArray[3]) -- 새 문자열print(testArray[4]) -- Another new string
배열의 시작 부분과 끝 부분 사이에 항목을 삽입하려면 table.insert() 의 두 번째 인수로 위치 값을 포함하십시오. 이렇게 하면 새 항목이 삽입되고 다음 항목이 하나의 인덱스 위치를 올립니다.
local testArray = {"First item", "Next item"}table.insert(testArray, 2, "NEW ITEM #2")print(testArray[1]) -- 첫 번째 아이템print(testArray[2]) -- 새로운 아이템 #2print(testArray[3]) -- Next item
아이템 제거
배열에서 항목을 삭제하려면 table.remove() 를 사용합니다. 이렇게 하면 지정된 위치의 항목이 삭제되고 다음 항목이 하나의 인덱스 위치로 다시 이동됩니다.
local testArray = {"First item", "Next item", "Last item"}table.remove(testArray, 2)print(testArray[1]) -- 첫 번째 아이템print(testArray[2]) -- Last item
사전
사전은 배열의 확장입니다. 사전에는 키가 숫자, 문자열 또는 개체일 수 있습니다.
사전 생성
사전 테이블을 생성하려면 각 키 다음에 나오는 = 및 값 을 정의하십시오. 각 키 값 쌍을 쉼표로 구분합니다.
local testDictionary = {FruitName = "Lemon",FruitColor = "Yellow",Sour = true}
사전의 키는 숫자, 문자열 및 개체일 수 있습니다. 예를 들어, 키는 Instance 일 수 있습니다. 개체를 키로 사용하려면 괄호([key]):
local part = Instance.new("Part")local testDictionary = {PartType = "Block",[part] = true}
사전에서 읽기
사전에서 읽으려면 참조 뒤에 따옴표 쌍을 추가하고 키 이름을 지정합니다. 따옴표( ["key"] )를 직접 참조하거나 변수 값( [key] )을 사용하십시오.
local part = Instance.new("Part")local testDictionary = {PartType = "Block",[part] = true}-- 문자열 열에 대한 따옴표 포함print(testDictionary["PartType"]) -- 블록-- 정규화되지 않은 열에 대한 따옴표 생략print(testDictionary[part]) -- true
사전에 글쓰기
새로운 또는 기존 사전 키의 값을 정의하거나 다시 작성하려면 따옴표([key] )를 사용하여 키 이름을 선언하고 값을 다음에 이어 작성합니다: = 및 값:
local testDictionary = {FruitName = "Lemon",Sour = true}-- 기존 키의 값 변경testDictionary["FruitName"] = "Cherry"testDictionary["Sour"] = false-- 새 키 값 쌍 삽입testDictionary["FruitCount"] = 10print(testDictionary["FruitName"]) -- 체리print(testDictionary["Sour"]) -- 없음print(testDictionary["FruitCount"]) -- 10
사전 항목 반복
사전을 반복하려면 pairs() 루프에서 글로벌 함수 for 를 사용하십시오.
local testDictionary = {FruitName = "Lemon",FruitColor = "Yellow",Sour = true}for key, value in pairs(testDictionary) doprint(key, value)end--[[ 결과 출력:FruitName LemonSour trueFruitColor Yellow]]
키 값 쌍 제거
사전에서 키 값 쌍을 삭제하거나 지우려면 키에 값을 nil 설정합니다.
local testDictionary = {FruitName = "Lemon",FruitColor = "Yellow",Sour = true}testDictionary["Sour"] = nilfor key, value in pairs(testDictionary) doprint(key, value)end--[[ 결과 출력:FruitName LemonFruitColor Yellow]]
참조 테이블
새 변수에 테이블을 저장하면 Luau는 해당 테이블의 복사본을 생성하지 않습니다. 대신 변수가 원래 테이블의 참조 또는 포인터가 됩니다. 테이블에 대한 참조는 원래 테이블의 모든 변경 사항을 반영합니다.
local originalArray = {10, 20}local arrayReference = originalArrayprint("Original:", originalArray[1], originalArray[2])print("Reference:", arrayReference[1], arrayReference[2])-- 원래 배열의 값 변경originalArray[1] = 1000originalArray[2] = 2000print("Reference:", arrayReference[1], arrayReference[2])--[[ 결과 출력:Original: 10 20Reference: 10 20Reference: 1000 2000]]
테이블 복제
얇은 클론
중첩된 테이블이 없는 테이블을 복사하려면 Luau는 table.clone() 메서드를 제공합니다.
local original = {key = "value",engine = "Roblox",playerID = 505306092}local clone = table.clone(original)
딥 클론
중첩된 테이블이 있는 더 복잡한 테이블을 복사하려면 팔로잉같은 재귀 함수를 사용해야 합니다.
-- 테이블을 심부르 복사하는 함수
local function deepCopy(original)
-- 복사본에 대한 새 테이블 정의
local copy = {}
-- 원래 테이블을 클론하려면 루프
for key, value in original do
-- 값의 형식이 테이블인 경우 키(인덱스)에 깊이 복사
-- 기타 (또는) 형식이 테이블이 아닙니다. 대신 인덱스에 기본 값을 할당하십시오
copy[key] = type(value) == "table" and deepCopy(value) or value
end
-- 완성된 복사 테이블의 최종 복사본을 반환합니다.
return copy
end
함수가 있는 상태에서 다음과 같은 깊은 복사본을 만들 수 있습니다.With the function in 플레이스, you can make a deep copy as follows:
local original = {key = "value",playerInfo = {playerID = 505306092,playerName = "PlayerName"},otherInfo = {{{1, 3, 5, 7, 9}}}}local clone = deepCopy(original)
얼음 테이블
테이블을 얼리면 읽기 전용이 되므로 원하지 않는 상수 값을 변경하지 않는 데 유용합니다. 얼리는 영구적이므로 table.isfrozen() 을 사용하여 얼리를 확인합니다. 테이블이 얼리면 Library.table. unfrozen() 을 사용하여 얼리를 해제하십시오.
얕은 동결
중첩된 테이블이 없는 테이블을 얼음 상태로 만들려면 Luau는 table.freeze() 메서드를 제공합니다.
local target = {key = "value",engine = "Roblox",playerID = 505306092}table.freeze(target)target.playerID = 1 --> attempt to modify a readonly table
깊은 얼음
중첩된 테이블이 있는 더 복잡한 테이블을 얼음 상태로 만들려면 팔로잉같은 재귀 함수를 사용하십시오.
local function deepFreeze(target)
-- 테이블 슬라이드 작은
table.freeze(target)
-- 테이블의 모든 키를 확인하고 테이블이 있는 경우 얼리십시오
for _, v in target do
if type(v) == "table" then
deepFreeze(v)
end
end
end
함수가 있는 상태에서 다음과 같이 테이블을 깊이 얼릴 수 있습니다.With the function in 플레이스, you can deep freeze a table as follows:
local target = {key = "value",playerInfo = {playerID = 505306092,playerName = "PlayerName"},otherInfo = {{{1, 3, 5, 7, 9}}}}deepFreeze(target)target.playerInfo.playerID = 1 --> attempt to modify a readonly table