ตัวประกอบ **** เป็นสัญลักษณ์สำหรับการดำเนินการหรือการประเมินเงื่อนไข
ตรรกะ
ตัวประกอบทางเหตุผลส่งค่ากลับขึ้นอยู่กับค่า boolean ของอาร์กิวเมนต์ที่กำหนดหากอาร์กิวเมนต์ไม่ใช่ false หรือ nil แล้วตัวประกอบจะประเมินมันเป็น trueไม่เหมือนภาษาอื่น ๆ หลายภาษา Luau พิจารณาทั้งศูนย์และสตริงว่างเปล่าเป็น trueตารางต่อไปนี้สรุปวิธีที่ตัวเลือกเชิงตรรกะทำงานในเงื่อนไข
ผู้ปฏิบัติการ | คําอธิบาย |
---|---|
and | ประเมินเป็น true เฉพาะถ้าทั้งสองเงื่อนไขเป็นจริง |
or | ประเมินเป็น true หากเงื่อนไขใดเป็นจริง |
not | ประเมินเป็นสิ่งที่ตรงข้ามกับเงื่อนไข |
และ
ตัวประกอบไบนารี and ส่งคืนหนึ่งในสองอาร์กิวเมนต์หากอาร์กิวเมนต์แรกประเมินเป็น true แล้วจะคืนอาร์กิวเมนต์ที่สองมิฉะนั้นจะส่งคืนอาร์กิวเมนต์แรก
print(4 and 5) -- 5print(nil and 12) -- ไม่มีprint(false and 12) -- ปิดprint(false and true) -- ปิดprint(false and false) -- ปิดprint(true and false) -- ปิดprint(true and true) -- true
คุณสามารถใช้ and เพื่อทดสอบเงื่อนไขหลายอย่างใน โครงสร้างการควบคุม เช่น if คําสั่ง และ while ลูปตัวอย่างเช่น คำสั่งทดสอบต่อไปนี้ if ‑ then ที่สองเงื่อนไขเป็นจริงทั้งสอง:
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
ตัวประกอบไบนารี or ส่งคืนหนึ่งในสองอาร์กิวเมนต์หากอาร์กิวเมนต์แรกประเมินเป็น true แล้วจะคืนอาร์กิวเมนต์แรกมิฉะนั้นจะส่งคืนอาร์กิวเมนต์ที่สอง
local y = x or 1print(y) -- 1 เพราะ x ไม่มีอยู่และจึงเป็นศูนย์local d = falselocal e = d or 1print(e) -- 1 เพราะ d เป็นเท็จprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- จริงprint(false or false) -- ปิดprint(true or false) -- จริงprint(true or true) -- true
คุณสามารถใช้ or เพื่อทำการทดสอบทางโลจิสติกที่ซับซ้อนใน โครงสร้างการควบคุมตัวอย่างเช่น คำสั่งต่อไปนี้ if‑then ทดสอบว่าสองเงื่อนไขเป็นจริงหรือไม่ หรือ เงื่อนไขที่สามเป็นจริง
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
ไม่
ตัวประกอบเชิงเดียว not ส่งค่า boolean ที่ตรงกันของอาร์กิวเมนต์กลับหากอาร์กิวเมนต์เป็น false หรือ nil จะคืน trueมิฉะนั้นจะส่งคืน false
print(not true) -- ปิดprint(not false) -- จริงprint(not nil) -- จริงprint(not "text") -- ปิดprint(not 0) -- false
คุณสามารถใช้ตัวประกอบ not เพื่อเรียกใช้คอนดิชันหรือลูปถ้าตัวแปรเป็น false หรือ nil
local nilVariable -- ตัวแปรถูกประกาศ แต่ไม่มีค่าดังนั้นจึงเป็นศูนย์local falseVariable = false -- ตัวแปรถูกประกาศด้วยค่าเท็จif not nilVariable thenprint(nilVariable) -- ออก "ไม่มี" เพราะ nil ไม่เป็นจริงendif not falseVariable thenprint(falseVariable) -- ออก "ไม่ถูกต้อง" เพราะไม่ถูกต้องไม่ใช่จริงend
คุณยังสามารถใช้ตัวประกอบ not เพื่อทดสอบสิ่งที่ตรงกันข้ามกับคำสั่งหลายเงื่อนไขทั้งหมดในตัวอย่างโค้ดต่อไปนี้ การทดสอบเงื่อนไข ‑ ที่ไม่ใช่จริงที่สามมากกว่าสี่หรือไม่ใช่จริงที่ห้ามากกว่าสี่
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.
เชิงสัมพันธ์
ผู้ประกอบเชิงเส้นสัมพันธ์เปรียบเทียบสองพารามิเตอร์และส่งคืน : หรือ หรือไม่
ผู้ปฏิบัติการ | คําอธิบาย | ตัวอย่าง | วิธีการ metamethod ที่เกี่ยวข้อง |
---|---|---|---|
== | เท่ากับ | 3 == 5 → false | __eq |
~= | ไม่เท่ากับ | 3 ~= 5 → true | |
> | มากกว่า | 3 > 5 → false | |
< | น้อยกว่า | 3 < 5 → true | __lt |
>= | มากกว่าหรือเท่ากับ | 3 >= 5 → false | |
<= | น้อยกว่าหรือเท่ากับ | 3 <= 5 → true | __le |
อาริทเมติก
Luau สนับสนุนตัวประกอบไบนารีทั่วไปพร้อมกับการคูณอัตราเร่ง โมดูล และการปฏิเสธเชิงเดียว
ผู้ปฏิบัติการ | คําอธิบาย | ตัวอย่าง | วิธีการ metamethod ที่เกี่ยวข้อง |
---|---|---|---|
+ | เพิ่ม | 1 + 1 = 2 | __add |
- | การหักลบ | 1 - 1 = 0 | __sub |
* | การคูณ | 5 * 5 = 25 | __mul |
/ | ดิวิชัน | 10 / 5 = 2 | __div |
// | การแบ่งชั้น | 10 // 4 = 2``-10 // 4 = -3 | __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!" |
อื่นๆ
ตัวประกอบอื่นๆ รวมถึง การรวมกัน และ ความยาว
ผู้ปฏิบัติการ | คําอธิบาย | ตัวอย่าง | วิธีการ metamethod ที่เกี่ยวข้อง |
---|---|---|---|
.. | รวมสองสตริง | print("Hello " .. "World!") | __concat |
# | ความยาวของตาราง | หาก tableVar = {1, 2, 3} , แล้ว #tableVar == 3 . | __len |