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 เมื่อเทียบกับเทคนิคพิเศษที่ใช้ในภาษาโปรแกรมอื่น ๆ