Clojure - Predicates
Predicatesเป็นฟังก์ชันที่ประเมินเงื่อนไขและให้ค่าเป็นจริงหรือเท็จ เราได้เห็นฟังก์ชันเพรดิเคตในตัวอย่างของบทเกี่ยวกับตัวเลข เราได้เห็นฟังก์ชันเช่น 'even?' ซึ่งใช้ในการทดสอบว่าตัวเลขเป็นเลขคู่หรือไม่หรือ "ลบ" ซึ่งใช้ในการทดสอบว่าตัวเลขมีค่ามากกว่าศูนย์หรือไม่ ฟังก์ชันทั้งหมดนี้ส่งคืนค่าจริงหรือเท็จ
ต่อไปนี้เป็นตัวอย่างของเพรดิเคตใน Clojure
(ns clojure.examples.example
(:gen-class))
;; This program displays Hello World
(defn Example []
(def x (even? 0))
(println x)
(def x (neg? 2))
(println x)
(def x (odd? 3))
(println x)
(def x (pos? 3))
(println x))
(Example)
โปรแกรมข้างต้นสร้างผลลัพธ์ต่อไปนี้
true
false
true
true
นอกเหนือจากฟังก์ชันเพรดิเคตปกติ Clojure ยังมีฟังก์ชันเพิ่มเติมสำหรับเพรดิเคต มีวิธีการต่อไปนี้สำหรับเพรดิเคต
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | ทุกประการ
รับชุดเพรดิเคตและส่งคืนฟังก์ชัน 'f' ที่ส่งคืนค่าจริงหากเพรดิเคตที่เขียนทั้งหมดส่งคืนค่าจริงเชิงตรรกะเทียบกับอาร์กิวเมนต์ทั้งหมดมิฉะนั้นจะคืนค่าเป็นเท็จ |
2 | ทุกๆ?
ส่งคืนจริงหากเพรดิเคตเป็นจริงสำหรับทุกค่ามิฉะนั้นเป็นเท็จ |
3 | บาง
ส่งคืนค่าจริงตรรกะแรกสำหรับค่าเพรดิเคตของ x ในคอลเล็กชันของค่า |
4 | ไม่ใด ๆ?
ส่งคืนเท็จหากเพรดิเคตใด ๆ ของค่าในคอลเลกชันเป็นจริงอย่างมีเหตุผลมิฉะนั้นจะเป็นจริง |