Lua - ตัวแปร
ตัวแปรไม่ใช่อะไรนอกจากชื่อที่กำหนดให้กับพื้นที่จัดเก็บที่โปรแกรมของเราสามารถจัดการได้ สามารถเก็บค่าประเภทต่างๆรวมทั้งฟังก์ชันและตาราง
ชื่อของตัวแปรสามารถประกอบด้วยตัวอักษรตัวเลขและอักขระขีดล่าง ต้องขึ้นต้นด้วยตัวอักษรหรือขีดล่าง อักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กมีความแตกต่างกันเนื่องจาก Lua คำนึงถึงตัวพิมพ์เล็กและใหญ่ ค่าพื้นฐานใน Lua มีแปดประเภท -
ใน Lua แม้ว่าเราจะไม่มีประเภทข้อมูลตัวแปร แต่เรามีสามประเภทตามขอบเขตของตัวแปร
Global variables - ตัวแปรทั้งหมดถือเป็นทั่วโลกเว้นแต่จะประกาศอย่างชัดเจนว่าเป็นโลคัล
Local variables - เมื่อระบุชนิดเป็นโลคัลสำหรับตัวแปรขอบเขตของมันจะถูก จำกัด ด้วยฟังก์ชันภายในขอบเขต
Table fields - นี่คือตัวแปรชนิดพิเศษที่สามารถเก็บอะไรก็ได้ยกเว้นศูนย์รวมถึงฟังก์ชัน
นิยามตัวแปรใน Lua
การกำหนดตัวแปรหมายถึงการบอกล่ามว่าจะสร้างหน่วยเก็บข้อมูลสำหรับตัวแปรได้ที่ไหนและเท่าใด นิยามตัวแปรมีชนิดที่เป็นทางเลือกและมีรายการของตัวแปรประเภทนั้นอย่างน้อยหนึ่งรายการดังนี้ -
type variable_list;
ที่นี่ type เป็นทางเลือกในท้องถิ่นหรือระบุประเภททำให้เป็นโกลบอลและ variable_listอาจประกอบด้วยชื่อตัวบ่งชี้อย่างน้อยหนึ่งชื่อโดยคั่นด้วยเครื่องหมายจุลภาค การประกาศที่ถูกต้องบางส่วนแสดงไว้ที่นี่ -
local i, j
local i
local a,c
เส้น local i, jทั้งประกาศและกำหนดตัวแปร i และ j; ซึ่งสั่งให้ล่ามสร้างตัวแปรชื่อ i, j และ จำกัด ขอบเขตให้เป็นแบบโลคัล
ตัวแปรสามารถเริ่มต้นได้ (กำหนดค่าเริ่มต้น) ในการประกาศ initializer ประกอบด้วยเครื่องหมายเท่ากับตามด้วยนิพจน์คงที่ดังนี้ -
type variable_list = value_list;
ตัวอย่างบางส่วน ได้แก่ -
local d , f = 5 ,10 --declaration of d and f as local variables.
d , f = 5, 10; --declaration of d and f as global variables.
d, f = 10 --[[declaration of d and f as global variables.
Here value of f is nil --]]
สำหรับคำจำกัดความที่ไม่มีตัวเริ่มต้น: ตัวแปรที่มีระยะเวลาการจัดเก็บแบบคงที่จะเริ่มต้นโดยปริยายด้วยศูนย์
การประกาศตัวแปรใน Lua
ดังที่คุณเห็นในตัวอย่างข้างต้นการกำหนดตัวแปรหลายรายการเป็นไปตามรูปแบบ variable_list และ value_list ในตัวอย่างข้างต้นlocal d, f = 5,10 เรามี d และ f ใน variable_list และ 5 และ 10 ในรายการค่า
การกำหนดค่าใน Lua จะเกิดขึ้นเหมือนกับตัวแปรแรกใน variable_list โดยมีค่าแรกใน value_list เป็นต้น ดังนั้นค่าของ d คือ 5 และค่าของ f คือ 10
ตัวอย่าง
ลองใช้ตัวอย่างต่อไปนี้ซึ่งมีการประกาศตัวแปรไว้ที่ด้านบนสุด แต่ได้รับการกำหนดและเริ่มต้นภายในฟังก์ชันหลัก -
-- Variable definition:
local a, b
-- Initialization
a = 10
b = 30
print("value of a:", a)
print("value of b:", b)
-- Swapping of variables
b, a = a, b
print("value of a:", a)
print("value of b:", b)
f = 70.0/3.0
print("value of f", f)
เมื่อสร้างและรันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
value of a: 10
value of b: 30
value of a: 30
value of b: 10
value of f 23.333333333333
Lvalues และ Rvalues ใน Lua
มีการแสดงออกสองประเภทใน Lua -
lvalue- นิพจน์ที่อ้างถึงตำแหน่งหน่วยความจำเรียกว่านิพจน์ "lvalue" ค่า lvalue อาจปรากฏเป็นด้านซ้ายหรือด้านขวาของงาน
rvalue- คำว่า rvalue หมายถึงค่าข้อมูลที่เก็บไว้ที่ที่อยู่บางส่วนในหน่วยความจำ rvalue คือนิพจน์ที่ไม่สามารถกำหนดค่าให้ได้ซึ่งหมายความว่า rvalue อาจปรากฏทางด้านขวามือ แต่จะไม่ปรากฏทางด้านซ้ายมือของงาน
ตัวแปรคือ lvalues ดังนั้นจึงอาจปรากฏทางด้านซ้ายมือของงาน ตัวอักษรตัวเลขเป็นค่า r จึงไม่สามารถกำหนดได้และไม่สามารถปรากฏทางด้านซ้ายมือ ต่อไปนี้เป็นคำสั่งที่ถูกต้อง -
g = 20
แต่ต่อไปนี้ไม่ใช่คำสั่งที่ถูกต้องและจะสร้างข้อผิดพลาดในการสร้างเวลา -
10 = 20
ในภาษาการเขียนโปรแกรม Lua นอกเหนือจากการกำหนดประเภทข้างต้นแล้วคุณสามารถมี lvalues และ rvalues ได้หลายค่าในคำสั่งเดียว ดังแสดงด้านล่าง
g,l = 20,30
ในข้อความข้างต้น 20 ถูกกำหนดให้กับ g และ 30 ถูกกำหนดให้กับ l