Lua - อาร์เรย์

อาร์เรย์เป็นลำดับการจัดเรียงของวัตถุซึ่งอาจเป็นอาร์เรย์หนึ่งมิติที่มีชุดของแถวหรืออาร์เรย์หลายมิติที่มีหลายแถวและคอลัมน์

ใน Lua อาร์เรย์จะถูกใช้งานโดยใช้ตารางการสร้างดัชนีที่มีจำนวนเต็ม ขนาดของอาร์เรย์ไม่คงที่และสามารถเติบโตได้ตามความต้องการของเราโดยขึ้นอยู่กับข้อ จำกัด ของหน่วยความจำ

อาร์เรย์หนึ่งมิติ

อาร์เรย์หนึ่งมิติสามารถแสดงโดยใช้โครงสร้างตารางอย่างง่ายและสามารถเริ่มต้นและอ่านได้โดยใช้ forวน. ตัวอย่างแสดงด้านล่าง

array = {"Lua", "Tutorial"}

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

เมื่อเรารันโค้ดด้านบนเราจะได้ผลลัพธ์ต่อไปนี้

nil
Lua
Tutorial

ดังที่คุณเห็นในโค้ดด้านบนเมื่อเราพยายามเข้าถึงองค์ประกอบในดัชนีที่ไม่มีอยู่ในอาร์เรย์จะส่งคืนค่าศูนย์ ใน Lua โดยทั่วไปการสร้างดัชนีจะเริ่มต้นที่ดัชนี 1 แต่ก็สามารถสร้างวัตถุที่ดัชนี 0 และต่ำกว่า 0 ได้เช่นกัน อาร์เรย์ที่ใช้ดัชนีเชิงลบแสดงอยู่ด้านล่างซึ่งเราเริ่มต้นอาร์เรย์โดยใช้for loop

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

อาร์เรย์หลายมิติ

อาร์เรย์หลายมิติสามารถใช้งานได้สองวิธี

  • อาร์เรย์ของอาร์เรย์
  • อาร์เรย์มิติเดียวโดยการจัดการดัชนี

ตัวอย่างสำหรับอาร์เรย์หลายมิติของ 3. 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 จึงสามารถบันทึกหน่วยความจำได้มากโดยไม่ต้องใช้เทคนิคพิเศษใด ๆ ใน Lua เมื่อเทียบกับเทคนิคพิเศษที่ใช้ในภาษาโปรแกรมอื่น ๆ