Một biến là một tên giữ một giá trị. Giá trị của biến có thể là số, chuỗi, boolean, kiểu dữ liệu, và nhiều hơn nữa.
Tên biến
Tên biến có thể là bất kỳ chuỗi không phải từ khóa nào gồm các chữ cái, chữ số và dấu gạch dưới mà không bắt đầu bằng một chữ số.
LETTERS -- hợp lệ
a1 -- hợp lệ
var_name -- hợp lệ
_test -- hợp lệ
if -- KHÔNG hợp lệ
25th -- KHÔNG hợp lệTên biến là phân biệt chữ hoa chữ thường, vì vậy TestVar và TESTVAR là những tên khác nhau. Tránh đặt tên biến với dấu gạch dưới và tất cả các chữ cái viết hoa, chẳng hạn như _VERSION, vì Luau có thể giữ chúng cho các biến toàn cục nội bộ.
Thực hành tốt nhất
Thực hành tốt nhất là viết đầy đủ các từ. Viết tắt thường làm cho mã dễ viết hơn, nhưng khó đọc hơn. Tuân theo các quy tắc đặt tên thông thường khi đặt tên cho các biến của bạn có thể giúp bạn và người khác hiểu ý nghĩa hoặc mục đích của chúng:
- Sử dụng tên PascalCase cho các đối tượng giống như lớp và enum.
- Sử dụng tên PascalCase cho tất cả các API của Roblox. Các API camelCase chủ yếu đã lỗi thời.
- Sử dụng tên camelCase cho các biến cục bộ, giá trị thành viên và hàm.
- Đừng viết hoa toàn bộ các từ viết tắt trong tên. Ví dụ, viết aJsonVariable hoặc MakeHttpCall.
Tên đã được giữ
Luau giữ lại các từ khóa sau, vì vậy bạn không thể sử dụng chúng để đặt tên cho các biến hoặc hàm:
- and
- for
- or
- break
- function
- repeat
- do
- if
- return
- else
- in
- then
- elseif
- local
- true
- end
- nil
- until
- false
- not
- while
Gán giá trị
Để tạo một biến và gán một giá trị cho nó, sử dụng toán tử =. Đặt biến ở bên trái của = và giá trị ở bên phải. Nếu bạn không đặt giá trị, giá trị sẽ là nil.
Các biến có thể có phạm vi toàn cục hoặc cục bộ phạm vi. Chúng có phạm vi toàn cục theo mặc định, nhưng gần như luôn tốt hơn khi tạo chúng với phạm vi cục bộ vì Luau truy cập các biến cục bộ nhanh hơn các biến toàn cục. Để cho một biến có phạm vi cục bộ, hãy đặt từ khóa local trước tên của biến khi bạn gán giá trị cho nó. Để cho nó có phạm vi cục bộ và cũng ngăn chặn việc gán lại, hãy sử dụng const thay vì local. Để biết thêm thông tin, xem Phạm vi.
local nilVar
local x = 10
local word = "Hello"
local boolean = true
print(nilVar) -- nil
print(x) -- 10
print(word) -- Hello
print(boolean) -- trueGán giá trị cho nhiều biến
Bạn có thể gán giá trị cho nhiều biến trong một dòng bằng cách phân tách mỗi cặp biến-giá trị bằng dấu phẩy. Nếu bạn có nhiều biến hơn giá trị, thì Luau sẽ gán nil cho các biến dư thừa. Nếu bạn có nhiều giá trị hơn biến, Luau sẽ không gán các giá trị dư thừa cho bất kỳ biến nào.
local a, b, c = 1, 2, 3
local d, e, f = 4, 5 -- biến dư thừa
local g, h = 7, 8, 9 -- giá trị dư thừa
print(a, b, c) -- 1, 2, 3
print(d, e, f) -- 4, 5, nil
print(g, h) -- 7, 8Thay đổi giá trị
Để thay đổi giá trị của một biến, gán một giá trị khác cho nó.
local x, y = 10, 20
print(x) -- 10
print(y) -- 20
x = 1000
y = 2000
print(x) -- 1000
print(y) -- 2000Biến const
Để tạo một biến mà bạn không thể gán lại, hãy sử dụng const thay vì local. Cố gắng gán lại một biến const sẽ gây ra lỗi, bao gồm thông qua một toán tử gán phức hợp như +=.
const MAX_HEALTH = 100
MAX_HEALTH = 50 -- lỗi: không thể gán lại một biến const
MAX_HEALTH += 1 -- lỗi: không thể gán lại một biến constGiống như local, const chấp nhận một chú thích kiểu, chẳng hạn như const MAX_HEALTH: number = 100.
Bạn cũng có thể khai báo một hàm với const, điều này ngăn chặn việc gán lại tên của hàm.
const function addOneAndTwo()
local result = 1 + 2
print(result)
end
addOneAndTwo = nil -- lỗi: không thể gán lại một biến constconst làm cho biến đó không thể thay đổi, không phải giá trị mà nó giữ. Nếu một biến const giữ một bảng, bạn vẫn có thể thay đổi nội dung của bảng. Để làm cho nội dung cũng không thể thay đổi, hãy sử dụng table.freeze().
const SETTINGS = { volume = 0 }
SETTINGS.volume = 1 -- ok, thay đổi một giá trị bên trong bảng
SETTINGS = {} -- lỗi: không thể gán lại một biến constKhác với các từ khóa trong Tên đã được giữ, const là ngữ cảnh. Luau chỉ coi nó là một từ khóa nơi local là hợp lệ, vì vậy mã hiện có sử dụng const như một tên biến vẫn hoạt động.
local const = 1
print(const) -- 1
const = 2 -- ok, `const` là một tên biến ở đâyĐể biết thêm thông tin và các trường hợp đặc biệt, xem tài liệu Luau.