แผนที่
ฟังก์ชัน map ใน Scheme ใช้เพื่อใช้ขั้นตอนกับแต่ละองค์ประกอบของรายการ (หรือหลายรายการ) และ ส่งคืนรายการใหม่ ที่มีผลลัพธ์ ทำให้เหมาะสำหรับการแปลงข้อมูล
รูปแบบที่ง่ายที่สุดของ map มีลักษณะดังนี้:
(map procedure list)- ขั้นตอน: ฟังก์ชันที่ใช้กับแต่ละองค์ประกอบของรายการ
- รายการ: รายการองค์ประกอบที่จะแปลง
ตัวอย่าง: เพิ่มแต่ละองค์ประกอบเป็นสองเท่า
(define (double x)
(* x 2))
(map double (list 1 2 3 4))- ในที่นี้ ฟังก์ชัน
doubleถูกนำไปใช้กับแต่ละองค์ประกอบของรายการ(1 2 3 4) - ผลลัพธ์คือรายการใหม่โดยแต่ละองค์ประกอบจะเพิ่มเป็นสองเท่า
เอาต์พุต: (2 4 6 8)
มันทำงานอย่างไร
สร้างรายการใหม่:
mapใช้ขั้นตอนที่ให้ไว้กับแต่ละองค์ประกอบของรายการและรวบรวมผลลัพธ์ลงในรายการใหม่
แปลงข้อมูล:
- ส่วนใหญ่จะใช้สำหรับการแปลงข้อมูลมากกว่าการแสดงผลข้างเคียง
ตัวอย่าง: การใช้งานกับหลายรายการ
หากมีการระบุหลายรายการ map จะประมวลผลองค์ประกอบที่เกี่ยวข้องจากแต่ละรายการ
(define (sum x y)
(+ x y))
(map sum (list 1 2 3) (list 4 5 6))- ฟังก์ชัน
sumเพิ่มองค์ประกอบที่เกี่ยวข้องจากทั้งสองรายการและส่งกลับผลลัพธ์เป็นรายการใหม่
เอาต์พุต: (5 7 9)
สรุป
- ฟังก์ชัน
mapเป็นเครื่องมืออันทรงพลังสำหรับการแปลงรายการโดยใช้ขั้นตอนกับแต่ละองค์ประกอบ - ต่างจาก
for-each,mapสร้างรายการใหม่ ที่มีผลลัพธ์ของการนำขั้นตอนไปใช้ - รองรับหลายรายการ ช่วยให้สามารถดำเนินการตามองค์ประกอบต่างๆ ได้
เมื่อใช้ map คุณสามารถสร้างเวอร์ชันที่แปลงข้อมูลของคุณได้อย่างมีประสิทธิภาพ ขณะเดียวกันก็รักษารายการดั้งเดิมไว้ไม่เปลี่ยนแปลง