English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Lua 배열

배열은 동일한 데이터 타입의 요소가 특정 순서로 배열된 집합으로, 일维 배열과 다중 배열이 될 수 있습니다.

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

일维 배열

일维 배열은 가장 간단한 배열로, 논리 구조는 선형 표입니다. 일维 배열은 for 루프를 사용하여 배열 내 요소를 꺼낼 수 있습니다. 예제를 보면 다음과 같습니다:

array = {"Lua", "Tutorial"}
for i= 0, 2 do
   print(array[i])
end

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

nil
Lua
튜토리얼

위에서 볼 수 있듯이, 정수 인덱스를 사용하여 배열 요소에 접근할 수 있으며, 인덱스 값이 없으면 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

다중 배열

다중 배열은 배열 내에 배열이나 일维 배열이 포함되어 있으며, 인덱스 키가 배열에 해당하는 배열입니다.

다음은 세 행 세 열의 배열 다중 배열입니다:

-- 배열 초기화
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

다른 인덱스 키의 세 행 세 열 배열 다중 배열:

-- 배열 초기화
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 값이 발생하지 않도록 하고, 메모리 공간을 절약하는 데 유리합니다.