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에서 특별한 기술 없이도 많은 메모리를 절약 할 수 있습니다.