Lolcode - ตัวดำเนินการ
ตัวดำเนินการมีบทบาทสำคัญในการดำเนินการต่างๆกับตัวแปร บทนี้จะนำเสนอโอเปอเรเตอร์ต่างๆใน LOLCODE และการใช้งาน
ตัวดำเนินการ
ตัวดำเนินการทางคณิตศาสตร์ขึ้นอยู่กับสัญกรณ์นำหน้าเช่นสัญกรณ์ที่มาก่อนตัวถูกดำเนินการ เมื่อตัวดำเนินการทั้งหมดทราบจำนวนอาร์กิวเมนต์หรือตัวถูกดำเนินการแล้วจึงไม่จำเป็นต้องมีเครื่องหมายการจัดกลุ่ม ในกรณีที่ตัวดำเนินการไม่มีอาร์กิวเมนต์หรือตัวถูกดำเนินการคงที่การดำเนินการจะปิดด้วย MKAY
ไม่สามารถใช้ MKAY ได้หากตรงกับส่วนท้ายของคำสั่ง ในกรณีเช่นนี้ควรใช้คีย์เวิร์ด EOL ในการใช้ตัวดำเนินการทางคณิตศาสตร์ที่เป็นเอกภาพให้ใช้ไวยากรณ์ต่อไปนี้ -
<operator> <expression>
คีย์เวิร์ด AN สามารถเลือกใช้เพื่อแยกอาร์กิวเมนต์และใช้การดำเนินการเดียวกับตัวถูกดำเนินการมากกว่าหนึ่งตัวได้ดังนั้นนิพจน์ตัวดำเนินการไบนารีจึงมีไวยากรณ์ต่อไปนี้ -
<operator> <expression1> AN <expression2>
นิพจน์ใด ๆ ที่มีตัวดำเนินการที่มีอาร์กิวเมนต์จำนวนไม่ จำกัด สามารถแสดงด้วยไวยากรณ์ต่อไปนี้ -
<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY
คณิตศาสตร์
ต่อไปนี้คือการดำเนินการทางคณิตศาสตร์พื้นฐานใน LOLCODE -
SUM OF <a> AN <b> BTW This is a plus + operator
DIFF OF <a> AN <n> BTW This is a minus - operator
PRODUKT OF <a> AN <n> BTW This is a multiply operator *
QUOSHUNT OF <a> AN <n> BTW This is a divide operator
MOD OF <a> AN <n> BTW This is a modulo operator
BIGGR OF <a> AN <n> BTW This is a max operator
SMALLR OF <a> AN <n> BTW This is a min operator
<a> และ <b> แต่ละนิพจน์สามารถเป็นนิพจน์เฉพาะในข้างต้นได้ดังนั้นตัวดำเนินการทางคณิตศาสตร์จึงสามารถซ้อนและจัดกลุ่มได้โดยไม่มีกำหนด
คณิตศาสตร์จะดำเนินการโดยพิจารณาว่าอาร์กิวเมนต์เป็นคณิตศาสตร์จำนวนเต็มต่อหน้า NUMBR สองรายการ แต่ถ้านิพจน์ใดนิพจน์เป็น NUMBAR การดำเนินการจะถือว่าเป็นการดำเนินการแบบทศนิยม
ตัวอย่าง
HAI 1.2
I HAS A m ITZ 4
I HAS A n ITZ 2
VISIBLE SUM OF m AN n BTW +
VISIBLE DIFF OF m AN n BTW -
VISIBLE PRODUKT OF m AN n BTW *
VISIBLE QUOSHUNT OF m AN n BTW /
VISIBLE MOD OF m AN n BTW modulo
VISIBLE BIGGR OF m AN n BTW max
VISIBLE SMALLR OF m AN n BTW min
KTHXBYE
โค้ดด้านบนจะสร้างผลลัพธ์ต่อไปนี้เมื่อคุณเรียกใช้ -
sh-
4.3$ lci main.lo
6
2
8
2
0
4
2
ประเด็นสำคัญ -
พิจารณาประเด็นสำคัญต่อไปนี้ที่เกี่ยวข้องกับการทำงานกับตัวดำเนินการทางคณิตศาสตร์ใน LOLCODE−
หากอาร์กิวเมนต์หนึ่งหรือทั้งสองอาร์กิวเมนต์ในนิพจน์เป็น YARN จะถือว่าอาร์กิวเมนต์เป็น NUMBAR
หากอาร์กิวเมนต์ใด ๆ ไม่สามารถโยนภายในเป็นประเภทตัวเลขได้อย่างปลอดภัยก็จะล้มเหลวด้วยข้อผิดพลาด
บูลีน
ตัวดำเนินการบูลีนถูกนำไปใช้กับค่าที่อาจเป็นจริงหรือเท็จ ตัวดำเนินการบูลีนที่ทำงานกับ TROOF มีดังต่อไปนี้ -
BOTH OF <m> AN <n> BTW its and operation: WIN if m = WIN and n = WIN
EITHER OF <m> AN <n> BTW its or operation: FAIL iff m = FAIL, n = FAIL
WON OF <m> AN <n> BTW its xor operation: FAIL if m = n
NOT <m> BTW its an unary negation: WIN if m = FAIL
ALL OF <m> AN <n> ... MKAY BTW it will take infinite arguments and apply AND
ANY OF <m> AN <n> ... MKAY BTW it will take infinite arguments and apply OR.
โปรดทราบว่า <m> และ <n> ในไวยากรณ์ของนิพจน์ด้านบนจะถูกแคสต์เป็นค่า TROOF โดยอัตโนมัติหากยังไม่มีค่า TROOF
การเปรียบเทียบ
เมื่อคุณต้องการเปรียบเทียบตัวถูกดำเนินการสองตัวขึ้นไปใน LOLCODE คุณสามารถทำได้ด้วยวิธีใดวิธีหนึ่งดังต่อไปนี้ -
วิธีที่ 1
คุณสามารถเปรียบเทียบตัวถูกดำเนินการไบนารีสองตัวโดยใช้ตัวดำเนินการความเท่าเทียมกัน ไวยากรณ์ดังแสดงด้านล่าง -
BOTH SAEM <m> AN <n> BTW this will return WIN if m is equal to n
DIFFRINT <m> AN <n> BTW this will return WIN if m is not equal to n
วิธีที่ 2
คุณสามารถเปรียบเทียบได้ว่าค่าทั้งสองเป็นประเภท NUMBR หรือไม่ โปรดจำไว้ว่าหากค่าใดค่าหนึ่งเป็น NUMBAR จะเปรียบเทียบเป็นค่าทศนิยม
วิธีที่ 3
คุณยังสามารถทำการเปรียบเทียบโดยใช้ตัวดำเนินการขั้นต่ำและสูงสุด ไวยากรณ์ดังแสดงด้านล่าง -
BOTH SAEM <m> AN BIGGR OF <m> AN <n>
BOTH SAEM <m> AN SMALLR OF <m> AN <n>
DIFFRINT <m> AN SMALLR OF <m> AN <n>
DIFFRINT <m> AN BIGGR OF <m> AN <n>
Example
HAI 1.2
I HAS A VAR11 ITZ 7
BOTH SAEM VAR11 SMALLR OF VAR11 AN 8, O RLY?
YA RLY
VISIBLE "TRUE"
NO WAI
VISIBLE "FALSE"
OIC
KTHXBYE
คุณสามารถดูผลลัพธ์ต่อไปนี้เมื่อคุณรันโค้ดที่กำหนด -
sh-
4.3$ lci main.lo
TRUE
การเชื่อมโยงค่านิยม
LOLCODE ช่วยให้คุณสามารถเชื่อมต่อ YARN จำนวนอนันต์ได้อย่างชัดเจนโดยใช้ตัวดำเนินการ SMOOSH ... MKAY สำหรับการเชื่อมต่อกันสามารถแยกอาร์กิวเมนต์หลายตัวด้วยAN ตัวดำเนินการ
ตัวอย่าง
HAI 1.2
I HAS A VAR1 ITZ A YARN
VAR1 R "TRUE"
I HAS A VAR2 ITZ A YARN
VAR2 R "ANOTHER TRUE"
I HAS A VAR3 ITZ A YARN
VAR3 R "ONE MORE TRUE"
VISIBLE SMOOSH VAR1 " " VAR3 " " VAR2 MKAY
KTHXBYE
รหัสที่ระบุข้างต้นจะให้ผลลัพธ์ต่อไปนี้เมื่อดำเนินการ -
sh-
4.3$ lci main.lo
TRUE ONE MORE TRUE ANOTHER TRUE
ประเภทหล่อ
ตัวดำเนินการที่ทำงานกับบางประเภทโดยปริยายหรือแปลงค่าของประเภทหนึ่งเป็นประเภทอื่นอย่างปลอดภัย หากไม่สามารถแปลงค่าเป็นประเภทอื่นได้อย่างปลอดภัยจะทำให้เกิดข้อผิดพลาด
ค่าของนิพจน์อาจถูกโยนอย่างชัดเจนหรือแปลงเป็นประเภทอื่นด้วยตัวดำเนินการ MAEK แบบไบนารี ไวยากรณ์ของ MAEK Operator คือ -
MAEK <expression> A <type>
โดยที่ <type> สามารถเป็นหนึ่งใน TROOF, YARN, NUMBR, NUMBAR หรือ NOOB
ในการโยนตัวแปรเป็นประเภทอื่นอย่างชัดเจนสามารถใช้คำสั่งการกำหนดปกติกับตัวดำเนินการ MAEK หรืออาจใช้คำสั่งการกำหนดค่าการคัดเลือกดังนี้ -
<Any_variable> IS NOW A <type> BTW this code will be equal to
<Any_variable> R MAEK <variable> A <type>
ตัวอย่าง
HAI 1.2
I HAS A food ITZ "111.00033"
VISIBLE food
BTW this is how we do type casting
MAEK food A NUMBAR
VISIBLE food
KTHXBYE
โค้ดด้านบนจะสร้างผลลัพธ์ต่อไปนี้
sh-4.3$ lci main.lo
111.00033
111.00033