Lua-어레이

배열은 개체의 정렬 된 배열로, 행 모음을 포함하는 1 차원 배열이거나 여러 행과 열을 포함하는 다차원 배열 일 수 있습니다.

Lua에서 배열은 정수가있는 인덱싱 테이블을 사용하여 구현됩니다. 배열의 크기는 고정되어 있지 않으며 메모리 제약에 따라 요구 사항에 따라 증가 할 수 있습니다.

1 차원 배열

1 차원 배열은 간단한 테이블 구조를 사용하여 표현할 수 있으며 간단한 방법을 사용하여 초기화하고 읽을 수 있습니다. for고리. 아래에 예가 나와 있습니다.

array = {"Lua", "Tutorial"}

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

위의 코드를 실행하면 다음과 같은 결과가 나옵니다.

nil
Lua
Tutorial

위 코드에서 볼 수 있듯이 배열에없는 인덱스의 요소에 액세스하려고하면 nil이 반환됩니다. Lua에서 인덱싱은 일반적으로 인덱스 1에서 시작합니다. 그러나 인덱스 0과 0 미만에서도 객체를 생성 할 수 있습니다. 음수 인덱스를 사용하는 배열은 for 루프를 사용하여 배열을 초기화하는 아래에 나와 있습니다 .

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의 다차원 배열의 예는 배열 배열을 사용하여 아래에 표시됩니다.

-- Initializing the array
array = {}

for i=1,3 do
   array[i] = {}
	
   for j=1,3 do
      array[i][j] = i*j
   end
	
end

-- Accessing the array

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

다차원 배열의 예는 인덱스 조작을 사용하여 아래에 나와 있습니다.

-- Initializing the array

array = {}

maxRows = 3
maxColumns = 3

for row=1,maxRows do

   for col=1,maxColumns do
      array[row*maxColumns +col] = row*col
   end
	
end

-- Accessing the array

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

위의 예에서 볼 수 있듯이 데이터는 인덱스를 기반으로 저장됩니다. 요소를 희소 한 방식으로 배치하는 것이 가능하며 Lua의 행렬 구현이 작동하는 방식입니다. Lua에 nil 값을 저장하지 않기 때문에 다른 프로그래밍 언어에서 사용되는 특수 기술에 비해 Lua에서 특별한 기술 없이도 많은 메모리를 절약 할 수 있습니다.