Một toán tử là một ký hiệu để thực hiện một phép toán hoặc đánh giá điều kiện.
Logic
Các toán tử logic trả về giá trị tùy thuộc vào giá trị boolean của các tham số đã cho. Nếu một tham số không phải là false hoặc nil, thì toán tử sẽ đánh giá nó là true. Không giống như nhiều ngôn ngữ khác, Luau coi cả số không và chuỗi rỗng đều là true. Bảng sau tóm tắt cách các toán tử logic hoạt động trong các biểu thức điều kiện.
| Toán tử | Mô tả |
|---|---|
| and | Đánh giá là true chỉ khi cả hai điều kiện đều đúng |
| or | Đánh giá là true nếu một trong hai điều kiện là đúng |
| not | Đánh giá là giá trị ngược lại của điều kiện |
and
Toán tử nhị phân and trả về một trong hai tham số. Nếu tham số đầu tiên đánh giá là true, thì nó trả về tham số thứ hai. Ngược lại, nó trả về tham số đầu tiên.
print(4 and 5) -- 5
print(nil and 12) -- nil
print(false and 12) -- false
print(false and true) -- false
print(false and false) -- false
print(true and false) -- false
print(true and true) -- trueBạn có thể sử dụng and để kiểm tra nhiều điều kiện trong cấu trúc điều khiển như câu lệnh if và vòng lặp while. Ví dụ, câu lệnh if‑then sau kiểm tra rằng cả hai điều kiện đều đúng:
local pasta = true
local tomatoSauce = true
if pasta == true and tomatoSauce == true then
print("Chúng tôi có bữa tối spaghetti")
else
print("Có thứ gì đó bị thiếu...")
end
-- Output: Chúng tôi có bữa tối spaghettior
Toán tử nhị phân or trả về một trong hai tham số. Nếu tham số đầu tiên đánh giá là true, thì nó trả về tham số đầu tiên. Ngược lại, nó trả về tham số thứ hai.
local y = x or 1
print(y) -- 1 vì x không tồn tại và do đó là nil
local d = false
local e = d or 1
print(e) -- 1 vì d là false
print(4 or 5) -- 4
print(nil or 12) -- 12
print(false or 12) -- 12
print(false or true) -- true
print(false or false) -- false
print(true or false) -- true
print(true or true) -- trueBạn có thể sử dụng or để thực hiện các bài kiểm tra logic phức tạp trong cấu trúc điều khiển. Ví dụ, câu lệnh if‑then sau kiểm tra xem hai điều kiện có đúng hoặc một điều kiện thứ ba có đúng:
local pasta = false
local tomatoSauce = true
local garlicBread = true
if (pasta == true and tomatoSauce == true) or garlicBread == true then
print("Chúng tôi có bữa tối spaghetti HOẶC bánh mỳ tỏi")
else
print("Có thứ gì đó bị thiếu...")
end
-- Output: Chúng tôi có bữa tối spaghetti HOẶC bánh mỳ tỏinot
Toán tử đơn not trả về giá trị boolean ngược lại của tham số. Nếu tham số là false hoặc nil, thì nó trả về true. Ngược lại, nó trả về false.
print(not true) -- false
print(not false) -- true
print(not nil) -- true
print(not "text") -- false
print(not 0) -- falseBạn có thể sử dụng toán tử not để kích hoạt một điều kiện hoặc vòng lặp nếu một biến là false hoặc nil.
local nilVariable -- Biến được khai báo nhưng không có giá trị, nên nó là nil
local falseVariable = false -- Biến được khai báo với giá trị false
if not nilVariable then
print(nilVariable) -- Xuất "nil" vì nil không phải là true
end
if not falseVariable then
print(falseVariable) -- Xuất "false" vì false không phải là true
endBạn cũng có thể sử dụng toán tử not để kiểm tra giá trị ngược lại của một câu điều kiện nhiều điều kiện. Trong đoạn mã sau, câu điều kiện if‑then kiểm tra rằng không có trường hợp nào đúng khi ba lớn hơn bốn và năm lớn hơn bốn.
local three = 3
local four = 4
local five = 5
if not (three > four or five < four) then
print("Ba nhỏ hơn 4 và năm lớn hơn 4.")
end
-- Output: Ba nhỏ hơn 4 và năm lớn hơn 4.Quan hệ
Các toán tử quan hệ so sánh hai tham số và trả về một boolean: true hoặc false.
| Toán tử | Mô tả | Ví dụ | Phương thức liên kết |
|---|---|---|---|
| == | Bằng nhau | 3 == 5 → false | __eq |
| ~= | Không bằng nhau | 3 ~= 5 → true | |
| > | Lớn hơn | 3 > 5 → false | |
| < | Nhỏ hơn | 3 < 5 → true | __lt |
| >= | Lớn hơn hoặc bằng | 3 >= 5 → false | |
| <= | Nhỏ hơn hoặc bằng | 3 <= 5 → true | __le |
Số học
Luau hỗ trợ các toán tử nhị phân thông thường cùng với phép lũy thừa, phép chia lấy dư, và phủ định đơn.
| Toán tử | Mô tả | Ví dụ | Phương thức liên kết |
|---|---|---|---|
| + | Phép cộng | 1 + 1 = 2 | __add |
| - | Phép trừ | 1 - 1 = 0 | __sub |
| * | Phép nhân | 5 * 5 = 25 | __mul |
| / | Phép chia | 10 / 5 = 2 | __div |
| // | Phép chia làm tròn | 10 // 4 = 2 | __idiv |
| ^ | Phép lũy thừa | 2 ^ 4 = 16 | __pow |
| % | Phép chia lấy dư | 13 % 7 = 6 | __mod |
| - | Phủ định đơn | -2 = 0 - 2 | __unm |
Gán hợp thành
Bạn có thể sử dụng các toán tử gán hợp thành để đặt một biến bằng kết quả của một phép toán mà tham số đầu tiên là giá trị hiện tại của biến đó.
Phép toán trong một gán hợp thành chỉ xảy ra một lần. Ví dụ, nếu một biểu thức sinh ra một chỉ số ngẫu nhiên trong một bảng, Luau sẽ sử dụng cùng một chỉ số cho cả phép toán và gán.
Trong các ví dụ sau, giả sử local x = 3.
| Toán tử | Phép toán | Ví dụ | Giá trị mới của x |
|---|---|---|---|
| += | Phép cộng | x += 2 | 5 |
| -= | Phép trừ | x -= 2 | 1 |
| *= | Phép nhân | x *= 2 | 6 |
| /= | Phép chia | x /= 2 | 1.5 |
| //= | Phép chia làm tròn | x //= 2 | 1 |
| %= | Phép chia lấy dư | x %= 2 | 1 |
| ^= | Phép lũy thừa | x ^= 2 | 9 |
| ..= | Kết hợp chuỗi | x ..= " World!" | "3 World!" |
Khác
Các toán tử khác bao gồm kết hợp chuỗi và độ dài.
| Toán tử | Mô tả | Ví dụ | Phương thức liên kết |
|---|---|---|---|
| .. | Kết hợp hai chuỗi | print("Xin chào " .. "Thế giới!") | __concat |
| # | Độ dài của bảng | Nếu tableVar = {1, 2, 3}, thì #tableVar == 3. | __len |