Clojure - ตัวดำเนินการ
อัน operator เป็นสัญลักษณ์ที่บอกให้คอมไพเลอร์ดำเนินการทางคณิตศาสตร์หรือตรรกะเฉพาะ
Clojure มีตัวดำเนินการประเภทต่อไปนี้ -
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเชิงสัมพันธ์
- ตัวดำเนินการทางตรรกะ
- ตัวดำเนินการ Bitwise
Note - ใน Clojure ตัวดำเนินการและตัวถูกดำเนินการทำงานในลักษณะไวยากรณ์ต่อไปนี้
ไวยากรณ์
(operator operand1 operand2 operandn)
ตัวอย่างเช่น,
ตัวอย่าง
(+ 1 2)
ตัวอย่างข้างต้นทำการคำนวณเลขคณิตกับตัวเลข 1 และ 2
ตัวดำเนินการเลขคณิต
ภาษา Clojure สนับสนุนตัวดำเนินการเลขคณิตปกติเป็นภาษาใดก็ได้ ต่อไปนี้เป็นตัวดำเนินการทางคณิตศาสตร์ที่มีอยู่ใน Clojure
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
+ | การเพิ่มตัวถูกดำเนินการสองตัว | (+ 1 2) จะให้ 3 |
- | ลบตัวถูกดำเนินการที่สองจากตัวแรก | (- 2 1) จะให้ 1 |
* | การคูณของตัวถูกดำเนินการทั้งสอง | (* 2 2) จะให้ 4 |
/ | การหารตัวเศษด้วยตัวส่วน | (float (/ 3 2)) จะให้ 1.5 |
รวม | ตัวดำเนินการที่เพิ่มขึ้นใช้เพื่อเพิ่มค่าของตัวถูกดำเนินการโดย 1 | inc 5 จะให้ 6 |
ธ.ค. | ตัวดำเนินการที่เพิ่มขึ้นใช้เพื่อลดค่าของตัวถูกดำเนินการโดย 1 | 5 ธ.ค. จะให้ 4 |
สูงสุด | ส่งคืนอาร์กิวเมนต์ที่ใหญ่ที่สุด | สูงสุด 1 2 3 จะคืนค่า 3 |
นาที | ส่งคืนอาร์กิวเมนต์ที่เล็กที่สุด | ขั้นต่ำ 1 2 3 จะส่งกลับ 1 |
rem | ส่วนที่เหลือของการหารจำนวนแรกด้วยตัวที่สอง | rem 3 2 จะให้ 1 |
ตัวดำเนินการเชิงสัมพันธ์
ตัวดำเนินการเชิงสัมพันธ์อนุญาตให้เปรียบเทียบวัตถุ ต่อไปนี้เป็นตัวดำเนินการเชิงสัมพันธ์ที่มีอยู่ใน Clojure
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
= | ทดสอบความเท่าเทียมกันระหว่างสองวัตถุ | (= 2 2) จะให้เป็นจริง |
ไม่ = | ทดสอบความแตกต่างระหว่างสองวัตถุ | (not = 3 2) จะให้เป็นจริง |
< | ตรวจสอบเพื่อดูว่าวัตถุด้านซ้ายน้อยกว่าตัวถูกดำเนินการด้านขวาหรือไม่ | (<2 3) จะให้เป็นจริง |
<= | ตรวจสอบว่าวัตถุด้านซ้ายน้อยกว่าหรือเท่ากับตัวถูกดำเนินการด้านขวาหรือไม่ | (<= 2 3) จะให้เป็นจริง |
> | ตรวจสอบเพื่อดูว่าวัตถุด้านซ้ายมีค่ามากกว่าตัวถูกดำเนินการด้านขวาหรือไม่ | (> 3 2) จะให้เป็นจริง |
> = | ตรวจสอบเพื่อดูว่าวัตถุทางซ้ายมากกว่าหรือเท่ากับตัวถูกดำเนินการด้านขวาหรือไม่ | (> = 3 2) จะให้เป็นจริง |
ตัวดำเนินการทางตรรกะ
ตัวดำเนินการทางตรรกะใช้เพื่อประเมินนิพจน์บูลีน ต่อไปนี้เป็นตัวดำเนินการเชิงตรรกะที่มีอยู่ใน Groovy
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
and | นี่คือโอเปอเรเตอร์“ และ” เชิงตรรกะ | (หรือจริงจริง) จะให้จริง |
or | นี่คือโอเปอเรเตอร์“ หรือ” เชิงตรรกะ | (และจริงเท็จ) จะให้เท็จ |
not | นี่คือโอเปอเรเตอร์ "ไม่ใช่" เชิงตรรกะ | (ไม่เท็จ) จะให้เป็นจริง |
ข้อมูลโค้ดต่อไปนี้แสดงวิธีใช้ตัวดำเนินการต่างๆ
ตัวดำเนินการ Bitwise
Clojure มีตัวดำเนินการสี่บิต ต่อไปนี้เป็นตัวดำเนินการระดับบิตที่มีอยู่ใน Clojure
แสดงตัวอย่าง
ซีเนียร์ | ตัวดำเนินการและคำอธิบาย |
---|---|
1 | bit-and นี่คือโอเปอเรเตอร์“ และ” แบบบิต |
2 | bit-or นี่คือโอเปอเรเตอร์“ หรือ” แบบบิต |
3 | bit-xor นี่คือโอเปอเรเตอร์“ xor” หรือ Exclusive 'หรือ' ในระดับบิต |
4 | bit-not นี่คือตัวดำเนินการปฏิเสธแบบบิต |
ต่อไปนี้เป็นตารางความจริงที่แสดงตัวดำเนินการเหล่านี้
น | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
ลำดับความสำคัญของตัวดำเนินการ
เช่นเดียวกับกรณีของ LISP โดยทั่วไปไม่จำเป็นต้องกังวลเกี่ยวกับลำดับความสำคัญของตัวดำเนินการ นี่คือประโยชน์อย่างหนึ่งของ S-Expressions และสัญลักษณ์นำหน้า ฟังก์ชั่นทั้งหมดประเมินจากซ้ายไปขวาและภายในออก โอเปอเรเตอร์ใน Clojure เป็นเพียงฟังก์ชันและทุกอย่างอยู่ในวงเล็บทั้งหมด