Elixir - โอเปอเรเตอร์
ตัวดำเนินการคือสัญลักษณ์ที่บอกให้คอมไพเลอร์ดำเนินการทางคณิตศาสตร์หรือตรรกะเฉพาะ มีโอเปอเรเตอร์จำนวนมากที่จัดหาโดยยาอายุวัฒนะ แบ่งออกเป็นหมวดหมู่ดังต่อไปนี้ -
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเปรียบเทียบ
- ตัวดำเนินการบูลีน
- ตัวดำเนินการอื่น ๆ
ตัวดำเนินการเลขคณิต
ตารางต่อไปนี้แสดงตัวดำเนินการทางคณิตศาสตร์ทั้งหมดที่สนับสนุนโดยภาษา Elixir สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20 แล้ว -
แสดงตัวอย่าง
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| + | เพิ่ม 2 หมายเลข | A + B จะให้ 30 |
| - | ลบตัวเลขที่สองจากตัวแรก | AB จะให้ -10 |
| * | คูณสองจำนวน | A * B จะให้ 200 |
| / | หารตัวเลขแรกจากวินาที สิ่งนี้จะทำให้ตัวเลขลอยตัวและให้ผลลัพธ์แบบลอยตัว | A / B จะให้ 0.5 |
| div | ฟังก์ชันนี้ใช้เพื่อหาผลหาร | div (10,20) จะให้ 0 |
| rem | ฟังก์ชันนี้ใช้เพื่อรับส่วนที่เหลือจากการหาร | rem (A, B) จะให้ 10 |
ตัวดำเนินการเปรียบเทียบ
ตัวดำเนินการเปรียบเทียบใน Elixir ส่วนใหญ่มักใช้กับตัวดำเนินการในภาษาอื่น ๆ ตารางต่อไปนี้สรุปตัวดำเนินการเปรียบเทียบใน Elixir สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20 แล้ว -
แสดงตัวอย่าง
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| == | ตรวจสอบว่าค่าทางซ้ายเท่ากับค่าทางขวาหรือไม่ (Type casts values ถ้าไม่ใช่ประเภทเดียวกัน) | A == B จะให้เท็จ |
| ! = | ตรวจสอบว่าค่าทางซ้ายไม่เท่ากับค่าทางขวาหรือไม่ | A! = B จะให้จริง |
| === | ตรวจสอบว่าประเภทของค่าทางซ้ายเท่ากับประเภทของค่าทางด้านขวาหรือไม่ถ้าใช่ให้ตรวจสอบค่าเดียวกัน | A === B จะให้เท็จ |
| ! == | เหมือนกับข้างบน แต่ตรวจสอบความไม่เท่าเทียมกันแทนที่จะเป็นความเท่าเทียมกัน | A! == B จะให้จริง |
| > | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | A> B จะให้เท็จ |
| < | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | A <B จะให้จริง |
| > = | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | A> = B จะให้เท็จ |
| <= | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | A <= B จะให้จริง |
ตัวดำเนินการทางตรรกะ
Elixir มีตัวดำเนินการเชิงตรรกะ 6 ตัว: และหรือไม่ใช่ &&, || และ!. สามคนแรกand or notเป็นตัวดำเนินการบูลีนที่เข้มงวดซึ่งหมายความว่าพวกเขาคาดหวังว่าอาร์กิวเมนต์แรกจะเป็นบูลีน อาร์กิวเมนต์ที่ไม่ใช่บูลีนจะทำให้เกิดข้อผิดพลาด ในขณะที่สามคนถัดไป&&, || and !ไม่เข้มงวดไม่ต้องการให้เรามีค่าแรกเป็นบูลีนอย่างเคร่งครัด พวกเขาทำงานในลักษณะเดียวกับคู่หูที่เข้มงวด สมมติตัวแปรA ถือเป็นจริงและตัวแปร B ถือ 20 แล้ว -
แสดงตัวอย่าง
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| และ | ตรวจสอบว่าค่าทั้งสองที่ระบุเป็นจริงหรือไม่ถ้าใช่จะส่งคืนค่าของตัวแปรที่สอง (ตรรกะและ). | A และ B จะให้ 20 |
| หรือ | ตรวจสอบว่าค่าที่ระบุเป็นจริงหรือไม่ ส่งคืนค่าใดก็ตามที่เป็นจริง ผลตอบแทนที่เป็นเท็จ (ตรรกะหรือ) | A หรือ B จะให้จริง |
| ไม่ | ตัวดำเนินการยูนารีซึ่งเปลี่ยนค่าของอินพุตที่กำหนด | ไม่ใช่ A จะให้เท็จ |
| && | ไม่เข้มงวด and. ทำงานเช่นเดียวกับand แต่ไม่คาดว่าอาร์กิวเมนต์แรกจะเป็นบูลีน | B && A จะให้ 20 |
| || | ไม่เข้มงวด or. ทำงานเช่นเดียวกับor แต่ไม่คาดว่าอาร์กิวเมนต์แรกจะเป็นบูลีน | B || A จะให้จริง |
| ! | ไม่เข้มงวด not. ทำงานเช่นเดียวกับnot แต่ไม่คาดหวังว่าอาร์กิวเมนต์จะเป็นบูลีน | ! A จะให้เท็จ |
NOTE −และ , หรือ , &&และ|| || เป็นตัวดำเนินการไฟฟ้าลัดวงจร ซึ่งหมายความว่าถ้าอาร์กิวเมนต์แรกของandเป็นเท็จจากนั้นจะไม่ตรวจสอบรายการที่สองอีก และถ้าอาร์กิวเมนต์แรกของorเป็นจริงแล้วจะไม่ตรวจสอบข้อที่สอง ตัวอย่างเช่น,
false and raise("An error")
#This won't raise an error as raise function wont get executed because of short
#circuiting nature of and operator
ตัวดำเนินการ Bitwise
ตัวดำเนินการ Bitwise ทำงานบนบิตและดำเนินการทีละบิต Elixir มีโมดูล bitwise เป็นส่วนหนึ่งของแพ็คเกจBitwiseดังนั้นในการใช้สิ่งเหล่านี้คุณต้องใช้โมดูลบิต ในการใช้งานให้ป้อนคำสั่งต่อไปนี้ในเชลล์ของคุณ -
use Bitwise
สมมติว่า A เป็น 5 และ B เป็น 6 สำหรับตัวอย่างต่อไปนี้ -
แสดงตัวอย่าง
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| &&& | Bitwise และตัวดำเนินการจะคัดลอกบิตเพื่อให้ได้ผลลัพธ์หากมีอยู่ในตัวถูกดำเนินการทั้งสอง | A &&& B จะให้ 4 |
| ||| | Bitwise หรือตัวดำเนินการจะคัดลอกบิตเพื่อให้ได้ผลลัพธ์หากมีอยู่ในตัวถูกดำเนินการอย่างใดอย่างหนึ่ง | ก ||| B จะให้ 7 |
| >>> | ตัวดำเนินการ shift ขวาแบบ Bitwise จะเลื่อนบิตตัวถูกดำเนินการแรกไปทางขวาตามจำนวนที่ระบุในตัวถูกดำเนินการที่สอง | A >>> B จะให้ 0 |
| <<< | ตัวดำเนินการ Shift ด้านซ้ายแบบ Bitwise จะเลื่อนบิตตัวถูกดำเนินการแรกไปทางซ้ายตามจำนวนที่ระบุในตัวถูกดำเนินการที่สอง | A <<< B จะให้ 320 |
| ^^^ | ตัวดำเนินการ Bitwise XOR จะคัดลอกบิตเพื่อให้ได้ผลลัพธ์เฉพาะในกรณีที่ตัวถูกดำเนินการทั้งสองต่างกัน | A ^^^ B จะให้ 3 |
| ~~~ | Unary bitwise จะไม่กลับด้านบิตของตัวเลขที่กำหนด | ~~~ A จะให้ -6 |
ตัวดำเนินการอื่น ๆ
นอกเหนือจากตัวดำเนินการข้างต้น Elixir ยังมีตัวดำเนินการอื่น ๆ อีกมากมายเช่น Concatenation Operator, Match Operator, Pin Operator, Pipe Operator, String Match Operator, Code Point Operator, Capture Operator, Ternary Operator ซึ่งทำให้ภาษานี้มีประสิทธิภาพมาก
แสดงตัวอย่าง