Một operator là một biểu tượng để thực hiện một hoạt động hoặc đánh giá điều kiện.
Nhận dạng
Các phép toán logic trả giá trị tùy thuộc vào giá trị boolean của các tham số được cung cấp.Nếu một tham số không phải là false hoặc nil, thì người vận hành sẽ đánh giá nó như true.Không giống như nhiều ngôn ngữ khác, Luau xem cả không và chuỗi trống là true .Bảng sau đây tổng hợp cách các logic operator hành động trong điều kiện conditional.
Nhà điều hành | Mô tả |
---|---|
and | Đánh giá là true chỉ khi cả hai điều kiện đều đúng |
or | Đánh giá là true nếu cả hai điều kiện đều đúng |
not | Đánh giá như là ngược lại với điều kiện |
và
Nhà vận hành nhị phân and trả về một trong hai tham số.Nếu lập luận đầu tiên đánh giá thành true , thì nó trả lại lập luận thứ hai.Nếu không, nó trả về argument đầu tiên.
print(4 and 5) -- 5print(nil and 12) -- không cóprint(false and 12) -- giả mạoprint(false and true) -- giả mạoprint(false and false) -- giả mạoprint(true and false) -- giả mạoprint(true and true) -- true
Bạ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ư if tuyên bố và while vòng lặp .Ví dụ, các tuyên bố sau if - then kiểm tra rằng hai điều kiện đều đúng:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("We have spaghetti dinner")elseprint("Something is missing...")end-- Output: We have spaghetti dinner
or
Nhà vận hành nhị phân or trả về một trong hai tham số.Nếu lập luận đầu tiên đánh giá thành true , thì nó trả lại lập luận đầu tiên.Nếu không, nó trả về các tham số thứ hai.
local y = x or 1print(y) -- 1 vì x không tồn tại và do đó là nillocal d = falselocal e = d or 1print(e) -- 1 vì d là saiprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- đúngprint(false or false) -- giả mạoprint(true or false) -- đúngprint(true or true) -- true
Bạ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ác tuyên bố sau if - then kiểm tra xem hai điều kiện có đúng hay không hoặc một điều kiện thứ ba có đúng hay không:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("We have either spaghetti dinner OR garlic bread")elseprint("Something is missing...")end-- Output: We have either spaghetti dinner OR garlic bread
không
Nhà vận hành unary not trả về giá trị boolean ngược lại của tham số.Nếu argument là false hoặc nil , thì nó trả về true .Nếu không, nó trả về false .
print(not true) -- giả mạoprint(not false) -- đúngprint(not nil) -- đúngprint(not "text") -- giả mạoprint(not 0) -- false
Bạn có thể sử dụng operator not để kích hoạt một điều kiện hoặc vòng lặp nếu biến là false hoặc nil .
local nilVariable -- Biến được tuyên bố nhưng không có giá trị, vì vậy nó là nillocal falseVariable = false -- Biến được tuyên bố với giá trị là falseif not nilVariable thenprint(nilVariable) -- Xuất "nil" vì nil không phải là sự thậtendif not falseVariable thenprint(falseVariable) -- Xuất ra "false" vì false không phải là trueend
Bạn cũng có thể sử dụng operator not để kiểm tra đối lập của toàn bộ câu lệnh điều kiện nhiều.Trong ví dụ mã sau, các kiểm tra điều kiện if - then không đúng là ba lớn hơn bốn hoặc không đúng là năm lớn hơn bốn.
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Three is less than 4 and five is greater than 4.")end-- Output: Three is less than 4 and five is greater than 4.
Quan hệ
Các hoạt động quan hệ so sánh hai tham số và trả về một boolean : true hoặc false .
Nhà điều hành | Mô tả | Ví dụ | Phương pháp metamethod liên quan |
---|---|---|---|
== | Bằng với | 3 == 5 → false | __eq |
~= > | Không bằng với | 3 ~= 5 → true | |
> | Lớn hơn | 3 > 5 → false > | |
< | Ít 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 |
Toán học
Luau hỗ trợ các operator nhị phân thông thường cùng với số nhân, chia và phủ nhận một chiều.
Nhà điều hành | Mô tả | Ví dụ | Phương pháp metamethod liên quan |
---|---|---|---|
+ | Thêm | 1 + 1 = 2 | __add |
- | Trừ bớt | 1 - 1 = 0 | __sub |
* | Nhân lên | 5 * 5 = 25 | __mul |
/ | Sư đoàn | 10 / 5 = 2 | __div |
// | Phân chia tầng | 10 // 4 = 2``-10 // 4 = -3 | __idiv |
^ | Nhân số lũy thừa | 2 ^ 4 = 16 | __pow |
% | Modulus Nhân | 13 % 7 = 6 | __mod |
- | Phủ nhận một chiều | -2 = 0 - 2 | __unm |
Phân bổ hợp chất
Bạn có thể sử dụng các phép gán hợp chất để đặt một biến bằng kết quả của một hoạt động mà tham số đầu tiên là giá trị hiện tại của biến.
Hoạt động trong một phân bổ hợp chất xảy ra một lần.Ví dụ, nếu một biểu hiện tạo một chỉ mục ngẫu nhiên trong một bảng, Luau sử dụng chỉ mục tương tự cho cả hoạt động và phân bổ.
Trong các ví dụ sau, cho rằng local x = 3 .
Nhà điều hành | Hoạt động | Ví dụ | Giá trị mới của x |
---|---|---|---|
+= | Thêm | x += 2 | 5 |
-= | Trừ bớt | x -= 2 | 1 |
*= | Nhân lên | x *= 2 | 6 |
/= | Sư đoàn | x /= 2 | 1.5 |
//= | Sư phân chia sàn | x //= 2 | 1 |
%= | Modulus Nhân | x %= 2 | 1 |
^= | Nhân số lũy thừa | x ^= 2 | 9 |
..= | Sự kết hợp | x ..= " World!" | "3 World!" |
Khác nhau
Các hoạt động khác bao gồm kết hợp và chiều dài .
Nhà điều hành | Mô tả | Ví dụ | Phương pháp metamethod liên quan |
---|---|---|---|
.. | Kết hợp hai chuỗi | print("Hello " .. "World!") | __concat |
# | Chiều dài của bảng | Nếu tableVar = {1, 2, 3} , sau đó #tableVar == 3. | __len |