An ตัวดำเนินการ คือสัญลักษณ์สำหรับการทำงานหรือการประเมินเงื่อนไข
เชิงตรรกะ
ตัวดำเนินการเชิงตรรกะจะส่งคืนค่าตามค่าบูลีนของพารามิเตอร์ที่กำหนด หากพารามิเตอร์ไม่ใช่ false หรือ nil ตัวดำเนินการจะประเมินเป็น true ต่างจากภาษาอื่น ๆ หลายภาษา Luau จะพิจารณาทั้งเลขศูนย์และสตริงว่างเป็น true ตารางด้านล่างสรุปวิธีที่ตัวดำเนินการเชิงตรรกะทำงานใน เงื่อนไข.
| ตัวดำเนินการ | คำบรรยาย |
|---|---|
| and | ประเมินเป็น true เฉพาะเมื่อเงื่อนไขทั้งสองเป็นจริง |
| or | ประเมินเป็น true เมื่อหนึ่งในสองเงื่อนไขเป็นจริง |
| not | ประเมินเป็นตรงกันข้ามของเงื่อนไข |
and
ตัวดำเนินการไบนารี and จะส่งคืนหนึ่งในสองพารามิเตอร์ หากพารามิเตอร์แรกประเมินเป็น true จะส่งคืนพารามิเตอร์ที่สอง มิฉะนั้น จะส่งคืนพารามิเตอร์แรก
print(4 and 5) -- 5print(nil and 12) -- nilprint(false and 12) -- falseprint(false and true) -- falseprint(false and false) -- falseprint(true and false) -- falseprint(true and true) -- true
คุณสามารถใช้ and เพื่อตรวจสอบหลายเงื่อนไขใน โครงสร้างควบคุม เช่น if statements และ while loops ตัวอย่างเช่น คำสั่ง if‑then ต่อไปนี้จะทดสอบว่าเงื่อนไขทั้งสองเป็นจริง:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("เรามีสปาเก็ตตี้สำหรับมื้อเย็น")elseprint("บางอย่างขาดหายไป...")end-- ผลลัพธ์: เรามีสปาเก็ตตี้สำหรับมื้อเย็น
or
ตัวดำเนินการไบนารี or จะส่งคืนหนึ่งในสองพารามิเตอร์ หากพารามิเตอร์แรกประเมินเป็น true จะส่งคืนพารามิเตอร์แรก มิฉะนั้น จะส่งคืนพารามิเตอร์ที่สอง
local y = x or 1print(y) -- 1 เพราะว่า x ไม่มีอยู่และดังนั้นจึงเป็น nillocal d = falselocal e = d or 1print(e) -- 1 เพราะว่า d เป็น falseprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- trueprint(false or false) -- falseprint(true or false) -- trueprint(true or true) -- true
คุณสามารถใช้ or เพื่อทำการทดสอบเชิงตรรกะที่ซับซ้อนใน โครงสร้างควบคุม ตัวอย่างเช่น คำสั่ง if‑then ต่อไปนี้จะทดสอบว่าเงื่อนไขทั้งสองเป็นจริง หรือ เงื่อนไขที่สามเป็นจริง:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("เรามีทั้งมื้อเย็นสปาเก็ตตี้หรือขนมปังกระเทียม")elseprint("บางอย่างขาดหายไป...")end-- ผลลัพธ์: เรามีทั้งมื้อเย็นสปาเก็ตตี้หรือขนมปังกระเทียม
not
ตัวดำเนินการอันเดียว not จะส่งคืนค่าบูลีนตรงกันข้ามกับพารามิเตอร์ หากพารามิเตอร์เป็น false หรือ nil จะส่งคืน true มิฉะนั้นจะส่งคืน false
print(not true) -- falseprint(not false) -- trueprint(not nil) -- trueprint(not "text") -- falseprint(not 0) -- false
คุณสามารถใช้ตัวดำเนินการ not เพื่อทำให้เกิดเงื่อนไขหรือลูปหากตัวแปรเป็น false หรือ nil
local nilVariable -- ตัวแปรถูกประกาศแต่ไม่มีค่า ดังนั้นเป็น nillocal falseVariable = false -- ตัวแปรถูกประกาศด้วยค่าเป็น falseif not nilVariable thenprint(nilVariable) -- ผลลัพธ์ "nil" เพราะ nil ไม่เป็นจริงendif not falseVariable thenprint(falseVariable) -- ผลลัพธ์ "false" เพราะ false ไม่เป็นจริงend
คุณยังสามารถใช้ตัวดำเนินการ not เพื่อตรวจสอบค่าผลลัพธ์ตรงกันข้ามของคำสั่งหลายเงื่อนไขทั้งหมด ในตัวอย่างโค้ดต่อไปนี้ เงื่อนไข if‑then จะทดสอบว่าไม่เป็นจริงที่สามมากกว่าสี่และไม่เป็นจริงที่ห้ามากกว่าสี่
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("สาม น้อยกว่าสี่ และห้ามากกว่าสี่.")end-- ผลลัพธ์: สาม น้อยกว่าสี่ และห้ามากกว่าสี่.
เชิงสัมพันธ์
ตัวดำเนินการเชิงสัมพันธ์จะเปรียบเทียบสองพารามิเตอร์และส่งคืน boolean: true หรือ false.
| ตัวดำเนินการ | คำบรรยาย | ตัวอย่าง | เมตาเมธอดที่เกี่ยวข้อง |
|---|---|---|---|
| == | เท่ากับ | 3 == 5 → false | __eq |
| ~= | ไม่เท่ากับ | 3 ~= 5 → true | |
| > | มากกว่า | 3 > 5 → false | |
| < | น้อยกว่า | 3 < 5 → true | __lt |
| >= | มากกว่าหรือเท่ากับ | 3 >= 5 → false | |
| <= | น้อยกว่าหรือเท่ากับ | 3 <= 5 → true | __le |
คณิตศาสตร์
Luau สนับสนุนตัวดำเนินการไบนารีปกติพร้อมด้วยการยกกำลัง โมดูลัส และการลบเชิงลบ
| ตัวดำเนินการ | คำบรรยาย | ตัวอย่าง | เมตาเมธอดที่เกี่ยวข้อง |
|---|---|---|---|
| + | บวก | 1 + 1 = 2 | __add |
| - | ลบ | 1 - 1 = 0 | __sub |
| * | การคูณ | 5 * 5 = 25 | __mul |
| / | การหาร | 10 / 5 = 2 | __div |
| // | การหารปัดเศษ | 10 // 4 = 2 | __idiv |
| ^ | การยกกำลัง | 2 ^ 4 = 16 | __pow |
| % | โมดูลัส | 13 % 7 = 6 | __mod |
| - | การลบเชิงลบ | -2 = 0 - 2 | __unm |
การมอบหมายแบบผสม
คุณสามารถใช้ตัวดำเนินการการมอบหมายแบบผสมเพื่อกำหนดค่าตัวแปรให้เท่ากับผลของการดำเนินการที่พารามิเตอร์แรกเป็นค่าปัจจุบันของตัวแปร
การดำเนินการในการมอบหมายแบบผสมจะเกิดขึ้นเพียงครั้งเดียว ตัวอย่างเช่น หากมีนิพจน์ที่สร้างดัชนีแบบสุ่มในตาราง Luau จะใช้ดัชนีเดียวกันสำหรับทั้งการดำเนินการและการมอบหมาย
ในตัวอย่างต่อไปนี้ สมมติว่า local x = 3.
| ตัวดำเนินการ | การดำเนินการ | ตัวอย่าง | ค่าใหม่ของ x |
|---|---|---|---|
| += | บวก | x += 2 | 5 |
| -= | ลบ | x -= 2 | 1 |
| *= | การคูณ | x *= 2 | 6 |
| /= | การหาร | x /= 2 | 1.5 |
| //= | การหารปัดเศษ | x //= 2 | 1 |
| %= | โมดูลัส | x %= 2 | 1 |
| ^= | การยกกำลัง | x ^= 2 | 9 |
| ..= | การต่อเชื่อม | x ..= " World!" | "3 World!" |
อื่น ๆ
ตัวดำเนินการอื่น ๆ รวมถึง การต่อเชื่อม และ ความยาว
| ตัวดำเนินการ | คำบรรยาย | ตัวอย่าง | เมตาเมธอดที่เกี่ยวข้อง |
|---|---|---|---|
| .. | เชื่อมต่อสตริงสองตัว | print("สวัสดี " .. "โลก!") | __concat |
| # | ความยาวของตาราง | หาก tableVar = {1, 2, 3} ดังนั้น #tableVar == 3. | __len |