แผนที่คือวิธี Ruby ที่คุณใช้กับ Arrays, Hashes &Ranges ได้
การใช้งานหลักสำหรับแผนที่คือการแปลงข้อมูล
ตัวอย่างเช่น :
ด้วยอาร์เรย์ของสตริง คุณสามารถข้ามทุกสตริงและทำให้ทุกอักขระเป็นตัวพิมพ์ใหญ่ได้
หรือถ้าคุณมีรายชื่อ User
วัตถุ…
คุณสามารถ แปลง ลงในรายการที่อยู่อีเมล หมายเลขโทรศัพท์ หรือแอตทริบิวต์อื่นๆ กำหนดไว้ที่ User
ชั้นเรียน
มาดูกันว่าต้องทำอย่างไร!
ไวยากรณ์แผนที่ทับทิม
ไวยากรณ์สำหรับแผนที่มีลักษณะดังนี้:
array = ["a", "b", "c"] array.map { |string| string.upcase } # ["A", "B", "C"]
อันดับแรก คุณมีอาร์เรย์ แต่ก็อาจเป็นแฮชหรือช่วงก็ได้
จากนั้นคุณเรียก map
ด้วยบล็อก
บล็อกนี้อยู่ระหว่างวงเล็บ { ... }
. ภายในบล็อกคุณพูดว่าคุณต้องการแปลงทุกองค์ประกอบในอาร์เรย์อย่างไร โดยพื้นฐานแล้วมันเป็นฟังก์ชัน
จะเกิดอะไรขึ้นหลังจากที่คุณเรียก map
?
แผนที่ ส่งคืนอาร์เรย์ใหม่ กับผลลัพธ์
จะไม่เปลี่ยนต้นฉบับ
หากคุณต้องการเปลี่ยนอาร์เรย์เดิม คุณสามารถใช้ map!
.
ตัวอย่างแผนที่ทับทิม
นี่คือตัวอย่างบางส่วนที่คุณอาจพบว่ามีประโยชน์
การทวีคูณตัวเลข :
array = [1,2,3] array.map { |n| n * 2 } # [2, 4, 6]
แปลงสตริงเป็นจำนวนเต็ม :
array = ["11", "21", "5"] array.map { |str| str.to_i } # [11, 21, 5]
แปลงค่าแฮชเป็นสัญลักษณ์ :
hash = { bacon: "protein", apple: "fruit" } hash.map { |k,v| [k, v.to_sym] }.to_h # {:bacon=>:protein, :apple=>:fruit}
เกี่ยวกับตัวอย่างแฮชนี้:
คุณจะพบว่าเรามีอาร์กิวเมนต์สองอาร์กิวเมนต์แทนที่จะเป็นหนึ่งอาร์กิวเมนต์ นั่นเป็นเพราะองค์ประกอบแฮชประกอบด้วยคีย์ &ค่า
จากนั้นฉันก็ส่งคืนอาร์เรย์ใหม่ด้วยคีย์ &ค่าที่แปลงแล้ว
ขั้นตอนสุดท้ายคือการแปลงกลับเป็นแฮช
แผนที่ทับทิมเทียบกับแต่ละแผนที่
แผนที่ &แต่ละแผนที่ต่างกันอย่างไร
แต่ละอันเปรียบเสมือนแผนที่เวอร์ชันดั้งเดิมกว่า …
มันให้องค์ประกอบทุกอย่างแก่คุณ เพื่อให้คุณทำงานได้ แต่ไม่ได้รวบรวมผลลัพธ์
ส่งกลับวัตถุเดิมที่ไม่เปลี่ยนแปลง .
ในขณะที่แผนที่ทำสิ่งเดียวกัน แต่…
ส่งคืนอาร์เรย์ใหม่พร้อมองค์ประกอบที่แปลงแล้ว
ตัวอย่าง :
array.each { |n| n * 2 } # [1, 2, 3] array.map { |n| n * 2 } # [2, 4, 6]
แผนที่ทับทิมเทียบกับการรวบรวม
แผนที่และการรวบรวมเป็นวิธีเดียวกันทุกประการ
เป็นชื่อที่แตกต่างกันสำหรับสิ่งเดียวกัน!
ควรใช้อันไหน
หากคุณอ่านโครงการโอเพนซอร์ส คุณจะพบว่าเวอร์ชันที่พบบ่อยที่สุดคือ map
.
ใช้สิ่งนั้น
วิธีใช้แผนที่ด้วยดัชนี
หากคุณต้องการดัชนีที่มีค่าของคุณ คุณสามารถใช้ with_index
วิธีการ
นี่คือตัวอย่าง :
array = %w(a b c) array.map.with_index { |ch, idx| [ch, idx] } # [["a", 0], ["b", 1], ["c", 2]]
เคล็ดลับโบนัส :
คุณสามารถส่งพารามิเตอร์ไปที่ with_index
หากคุณไม่ต้องการเริ่มต้นจากดัชนี 0
ย่อแผนที่ทับทิม (แผนที่ &)
คุณสามารถใช้เวอร์ชันชวเลขสำหรับ map
เมื่อคุณเรียกวิธีการที่ไม่ต้องการข้อโต้แย้งใดๆ .
ตัวอย่าง :
["11", "21", "5"].map(&:to_i)
ตัวอย่าง :
["orange", "apple", "banana"].map(&:class)
&ไวยากรณ์นี้ไม่จำกัดเฉพาะ map
นอกจากนี้ยังสามารถใช้กับวิธีการนับอื่นๆ ได้อีกด้วย
Map Method Mindmap
วิดีโอสอน
สรุป
คุณได้เรียนรู้เกี่ยวกับวิธีการใช้แผนที่ Ruby แล้ว! คุณยังได้เรียนรู้ความแตกต่างระหว่างแต่ละแผนที่และการรวบรวม
หากคุณชอบบทความนี้โปรดแชร์กับเพื่อน Ruby ของคุณ 🙂
ขอบคุณสำหรับการอ่าน!