แผนที่

ฟังก์ชัน 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)


มันทำงานอย่างไร

  1. สร้างรายการใหม่:

    • map ใช้ขั้นตอนที่ให้ไว้กับแต่ละองค์ประกอบของรายการและรวบรวมผลลัพธ์ลงในรายการใหม่
  2. แปลงข้อมูล:

    • ส่วนใหญ่จะใช้สำหรับการแปลงข้อมูลมากกว่าการแสดงผลข้างเคียง

ตัวอย่าง: การใช้งานกับหลายรายการ

หากมีการระบุหลายรายการ 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 คุณสามารถสร้างเวอร์ชันที่แปลงข้อมูลของคุณได้อย่างมีประสิทธิภาพ ขณะเดียวกันก็รักษารายการดั้งเดิมไว้ไม่เปลี่ยนแปลง