루아 배열


배열은 동일한 데이터 유형의 요소를 특정 순서로 배열한 집합입니다. 1차원 배열일 수도 있고 다차원 배열일 수도 있습니다.

Lua 배열의 인덱스 키 값은 정수로 표현이 가능하며, 배열의 크기는 고정되어 있지 않습니다.


1차원 배열

1차원 배열은 가장 간단한 배열이며, 논리적 구조는 선형 테이블입니다. 1차원 배열은 다음 예와 같이 for 루프를 사용하여 배열의 요소를 반복할 수 있습니다.

array = {"Lua", "Tutorial"}

for i= 0, 2 do
   print(array[i])
end

위 코드 실행의 출력 결과는 다음과 같습니다.

nil
Lua
Tutorial


보시다시피 예, 정수 인덱스를 사용하여 배열 요소에 액세스할 수 있으며, 알려진 인덱스에 값이 없으면 nil을 반환합니다.


Lua 인덱스 값은 1부터 시작하지만 0을 시작점으로 지정할 수도 있습니다.

또한 배열 인덱스 값으로 음수를 사용할 수도 있습니다.

array = {}

for i= -2, 2 do
   array[i] = i *2
end

for i = -2,2 do
   print(array[i])
end

위 코드를 실행한 결과는 다음과 같습니다.

-4
-2
0
2
4

다차원 배열

다차원 배열이란 배열에 배열이 포함되어 있거나 1차원 배열의 인덱스 키가 배열에 해당하는 것을 의미합니다.

다음은 3행, 3열 배열 다차원 배열입니다.

-- 初始化数组
array = {}
for i=1,3 do
   array[i] = {}
      for j=1,3 do
         array[i][j] = i*j
      end
end

-- 访问数组
for i=1,3 do
   for j=1,3 do
      print(array[i][j])
   end
end

위 코드 실행 결과는 다음과 같습니다.

1
2
3
2
4
6
3
6
9

3행, 3행 -column array 인덱스 키가 다른 다차원 배열 :

-- 初始化数组
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows do
   for col=1,maxColumns do
      array[row*maxColumns +col] = row*col
   end
end

-- 访问数组
for row=1,maxRows do
   for col=1,maxColumns do
      print(array[row*maxColumns +col])
   end
end

위 코드를 실행한 결과는 다음과 같습니다.

1
2
3
2
4
6
3
6
9

보시다시피 위의 예에서는 배열이 설정됩니다. nil 값을 방지할 수 있는 지정된 인덱스 값으로 메모리 공간을 절약하는 데 도움이 됩니다.