ตัวแปร (variable) คือชื่อที่ถือค่าหนึ่งค่า ค่าในตัวแปรสามารถเป็น ตัวเลข, สตริง, บูลีน, ประเภทข้อมูล, และอื่นๆ
ตั้งชื่อตัวแปร
ชื่อตัวแปรสามารถเป็นสตริงที่ไม่ถูกสงวนซึ่งประกอบด้วยตัวอักษร, ตัวเลข, และขีดล่างที่ไม่เริ่มต้นด้วยตัวเลข
LETTERS -- ถูกต้อง
a1 -- ถูกต้อง
var_name -- ถูกต้อง
_test -- ถูกต้อง
if -- ไม่ถูกต้อง
25th -- ไม่ถูกต้องชื่อตัวแปรมี ความไวต่อการพิมพ์ ดังนั้น TestVar และ TESTVAR จึงเป็นชื่อที่แตกต่างกัน หลีกเลี่ยงการตั้งชื่อตัวแปรด้วยขีดล่างและตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่ เช่น _VERSION เพราะ Luau อาจสงวนชื่อเหล่านี้ไว้สำหรับตัวแปรทั่วไประดับโลก
แนวทางปฏิบัติที่ดีที่สุด
แนวทางปฏิบัติที่ดีที่สุดคือการสะกดคำให้ครบถ้วน โดยทั่วไปแล้วการย่อคำทำให้เขียนโค้ดได้ง่ายขึ้น แต่ทำให้อ่านได้ยากขึ้น การปฏิบัติตามแนวทางการตั้งชื่อที่เป็นที่นิยมเมื่อคุณตั้งชื่อตัวแปรสามารถช่วยให้คุณและผู้อื่นเข้าใจความหมายหรือวัตถุประสงค์ของมันได้:
- ใช้ชื่อ PascalCase สำหรับคลาสและวัตถุที่คล้าย enum
- ใช้ชื่อ PascalCase สำหรับ API ของ Roblox ทั้งหมด API ที่ใช้ camelCase ส่วนใหญ่จะถูกยกเลิก
- ใช้ชื่อ camelCase สำหรับตัวแปรท้องถิ่น, ค่าของสมาชิก, และ ฟังก์ชัน
- อย่าตัวพิมพ์ใหญ่ทั้งตัวย่อภายในชื่อ ตัวอย่างเช่น เขียนว่า aJsonVariable หรือ MakeHttpCall
ชื่อที่สงวนไว้
Luau สงวนคำสำคัญต่อไปนี้ ดังนั้นคุณไม่สามารถใช้มันในการตั้งชื่อตัวแปรหรือ ฟังก์ชัน:
- and
- for
- or
- break
- function
- repeat
- do
- if
- return
- else
- in
- then
- elseif
- local
- true
- end
- nil
- until
- false
- not
- while
กำหนดค่า
ในการสร้างตัวแปรและกำหนดค่าให้กับมัน ให้ใช้ตัวดำเนินการ = วางตัวแปรไว้ทางซ้ายของ = และค่าที่ต้องการกำหนดไว้ทางขวา หากคุณไม่ใส่ค่า ค่านั้นจะเป็น nil
ตัวแปรสามารถมี ขอบเขต ทั่วไประดับโลก หรือ ท้องถิ่น โดยค่าเริ่มต้นจะมีขอบเขตทั่วไประดับโลก แต่โดยทั่วไปแล้วการสร้างตัวแปรด้วยขอบเขตท้องถิ่นจะดีกว่าเพราะ Luau เข้าถึงตัวแปรท้องถิ่นได้เร็วกว่าตัวแปรทั่วไประดับโลก เพื่อให้ตัวแปรมีขอบเขตท้องถิ่น ให้ใส่คำสำคัญ local ก่อนชื่อของตัวแปรเมื่อคุณกำหนดค่าให้กับมัน หากต้องการให้มีขอบเขตท้องถิ่นและป้องกันการกำหนดค่าใหม่ ให้ใช้ const แทน local สำหรับข้อมูลเพิ่มเติม ดูที่ ขอบเขต
local nilVar
local x = 10
local word = "Hello"
local boolean = true
print(nilVar) -- nil
print(x) -- 10
print(word) -- Hello
print(boolean) -- trueกำหนดค่าให้กับตัวแปรหลายตัว
คุณสามารถกำหนดค่าให้กับตัวแปรหลายตัวในบรรทัดเดียวโดยการแยกแต่ละคู่ตัวแปร-ค่าออกด้วยเครื่องหมายจุลภาค หากคุณมีตัวแปรมากกว่าค่า Luau จะกำหนดค่า nil ให้กับตัวแปรที่เกิน หากคุณมีค่ามากกว่าตัวแปร Luau จะไม่กำหนดค่าที่เกินให้กับตัวแปรใดๆ
local a, b, c = 1, 2, 3
local d, e, f = 4, 5 -- ตัวแปรเพิ่มเติม
local g, h = 7, 8, 9 -- ค่าที่เพิ่มเติม
print(a, b, c) -- 1, 2, 3
print(d, e, f) -- 4, 5, nil
print(g, h) -- 7, 8เปลี่ยนค่า
ในการเปลี่ยนค่าของตัวแปร ให้กำหนดค่าใหม่ให้กับมัน
local x, y = 10, 20
print(x) -- 10
print(y) -- 20
x = 1000
y = 2000
print(x) -- 1000
print(y) -- 2000ตัวแปรคงที่
ในการสร้างตัวแปรที่คุณไม่สามารถกำหนดค่าใหม่ได้ ให้ใช้ const แทน local การพยายามกำหนดค่าตัวแปร const ใหม่จะทำให้เกิดข้อผิดพลาด รวมถึงการใช้ ตัวดำเนินการกำหนดค่าผสม เช่น +=
const MAX_HEALTH = 100
MAX_HEALTH = 50 -- ข้อผิดพลาด: ไม่สามารถกำหนดค่าตัวแปร const ใหม่ได้
MAX_HEALTH += 1 -- ข้อผิดพลาด: ไม่สามารถกำหนดค่าตัวแปร const ใหม่ได้เช่นเดียวกับ local, const ยอมรับ การระบุประเภท เช่น const MAX_HEALTH: number = 100
คุณยังสามารถประกาศฟังก์ชันด้วย const ซึ่งจะป้องกันการกำหนดชื่อของฟังก์ชันใหม่
const function addOneAndTwo()
local result = 1 + 2
print(result)
end
addOneAndTwo = nil -- ข้อผิดพลาด: ไม่สามารถกำหนดค่าตัวแปร const ใหม่ได้const ทำให้ตัวแปรนั้นไม่สามารถเปลี่ยนแปลงได้ แต่ไม่ใช่ค่าที่มันถืออยู่ หากตัวแปร const ถือ ตาราง คุณยังสามารถเปลี่ยนเนื้อหาของตารางได้ หากต้องการทำให้เนื้อหานั้นไม่สามารถเปลี่ยนแปลงได้เช่นกัน ให้ใช้ table.freeze()
const SETTINGS = { volume = 0 }
SETTINGS.volume = 1 -- ถูกต้อง, เปลี่ยนค่าภายในตาราง
SETTINGS = {} -- ข้อผิดพลาด: ไม่สามารถกำหนดค่าตัวแปร const ใหม่ได้แตกต่างจากคำสำคัญใน ชื่อที่สงวนไว้ const เป็นบริบท Luau จะถือว่าเป็นคำสำคัญเฉพาะที่ local เป็นคำที่ถูกต้อง ดังนั้นโค้ดที่มีอยู่ที่ใช้ const เป็นชื่อของตัวแปรยังคงทำงานได้
local const = 1
print(const) -- 1
const = 2 -- ถูกต้อง, `const` เป็นชื่อของตัวแปรที่นี่สำหรับข้อมูลเพิ่มเติมและกรณีขอบเขต ดูที่ เอกสาร Luau.