Lua - Mảng

Mảng là sự sắp xếp có thứ tự của các đối tượng, có thể là mảng một chiều chứa tập hợp các hàng hoặc mảng nhiều chiều chứa nhiều hàng và cột.

Trong Lua, mảng được triển khai bằng cách sử dụng bảng lập chỉ mục với các số nguyên. Kích thước của một mảng không cố định và nó có thể phát triển dựa trên yêu cầu của chúng ta, tùy thuộc vào các hạn chế về bộ nhớ.

Mảng một chiều

Mảng một chiều có thể được biểu diễn bằng cấu trúc bảng đơn giản và có thể được khởi tạo và đọc bằng cách sử dụng forvòng. Một ví dụ đã được biểu diễn ở dưới.

array = {"Lua", "Tutorial"}

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

Khi chúng tôi chạy đoạn mã trên, chúng tôi sẽ nhận được kết quả sau.

nil
Lua
Tutorial

Như bạn có thể thấy trong đoạn mã trên, khi chúng ta đang cố gắng truy cập một phần tử trong một chỉ mục không có trong mảng, nó sẽ trả về nil. Trong Lua, việc lập chỉ mục thường bắt đầu từ chỉ mục 1. Nhưng cũng có thể tạo các đối tượng ở chỉ mục 0 và dưới 0. Mảng sử dụng chỉ số âm được hiển thị bên dưới, nơi chúng ta khởi tạo mảng bằng vòng lặp for .

array = {}

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

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

Khi chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau.

-4
-2
0
2
4

Mảng đa chiều

Mảng nhiều chiều có thể được thực hiện theo hai cách.

  • Mảng của mảng
  • Mảng một chiều bằng cách thao tác các chỉ số

Ví dụ cho mảng nhiều chiều của 3. 3 được hiển thị dưới đây bằng cách sử dụng mảng các mảng.

-- 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

Khi chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau.

1
2
3
2
4
6
3
6
9

Dưới đây là một ví dụ cho mảng nhiều chiều bằng cách sử dụng các chỉ số thao tác.

-- 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

Khi chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau.

1
2
3
2
4
6
3
6
9

Như bạn có thể thấy trong ví dụ trên, dữ liệu được lưu trữ dựa trên các chỉ số. Có thể đặt các phần tử một cách thưa thớt và đó là cách thực thi Lua của một ma trận. Vì nó không lưu trữ giá trị nil trong Lua, nên có thể tiết kiệm rất nhiều bộ nhớ mà không cần bất kỳ kỹ thuật đặc biệt nào trong Lua so với các kỹ thuật đặc biệt được sử dụng trong các ngôn ngữ lập trình khác.