`Hash` ของ Ruby คือมีดพกสารพัดประโยชน์
(akshaykhot.com)Hashของ Ruby เป็นโครงสร้างข้อมูลแบบ built-in สำหรับแมปค่ากับคีย์ มีความซับซ้อน O(1)- ภาษาอื่น ๆ มักมีคลาสหลายแบบสำหรับจัดการคีย์/แวลู แต่ Ruby ใช้คลาส
Hashเพียงตัวเดียวในการจัดการคู่คีย์/แวลู - เป็นโครงสร้างข้อมูลที่ยืดหยุ่นมาก ใช้ได้หลากหลายนอกเหนือจากอ็อบเจ็กต์ข้อมูล / ดิกชันนารี / แฮชเทเบิล / ลิสต์ที่เรียงลำดับแล้ว
- สามารถใช้อ็อบเจ็กต์แทบทุกชนิดเป็นคีย์ได้ รวมถึงสัญลักษณ์ สตริง และจำนวนเต็ม
- เมธอด
fetchใช้กำหนดค่าเริ่มต้นได้เมื่อไม่มีคีย์นั้น - ใช้
deleteเพื่อลบคีย์ได้ และการเรียกคีย์ที่ไม่มีอยู่ก็ไม่เป็นปัญหา - ซ้อนกันได้
- หากไม่มีคีย์นั้นจะคืนค่า
nilแต่สามารถกำหนดค่าเริ่มต้นได้ด้วยพร็อพเพอร์ตีdefault - มีโมดูล
Enumerableรวมอยู่ด้วย จึงสามารถวนลูปแฮชได้ด้วยเมธอดอย่างeach,each_key,each_pair,each_value,keys,valuesเป็นต้น - สามารถ unpack เนื้อหาในแฮชได้ด้วยตัวดำเนินการ double splat
** - เมธอดที่มีประโยชน์อื่น ๆ:
any?(key),compact,empty?,merge,hash.eql? obj,except(*keys),reject,filter&select,fetch_values(*keys),has_key?,member?,include?,key?,has_value?,value?,length,size,count,slice(*keys),transform_values,flatten
9 ความคิดเห็น
ทำให้นึกถึงความประทับใจตอนเรียนภาษา c ในมหาวิทยาลัย แล้วได้เจอกับ Python list เป็นครั้งแรกเลยครับ
พยายามจะแปล "Swiss Army knife" เป็น "มีดแมคกาเวอร์" แต่คิดว่าคนสมัยนี้น่าจะไม่เข้าใจ เลยใช้คำว่า "เครื่องมือสารพัดประโยชน์" แทน..
น่าจะพอใช้คำว่า MacGyver ได้อยู่ แต่ถ้าไม่รู้จัก Swiss Army knife มาก่อนก็คงเข้าใจยากเหมือนกันครับ 555
แม้แต่ฉันที่ยังเป็นวัยรุ่นก็เข้าใจได้ ดูเหมือนว่าจะมีคนที่ไม่รู้เรื่องนี้ไม่มากนัก
โอ้ เป็นการค้นพบที่น่าทึ่งจริง ๆ นะครับ ผมคิดจริง ๆ ว่าคงไม่มีทางรู้มาก่อน
ว่าแต่ ในบรรดาผู้ใช้ GeekNews ก็มีวัยรุ่นอยู่ด้วยสินะ.. เจ๋งมากครับ!
ดูเหมือนว่าแม้แต่นักพัฒนาวัยรุ่นก็มีเพิ่มขึ้นอย่างคาดไม่ถึง ทำให้นักพัฒนานักเรียนที่เข้ามาอ่าน GeekNews ค่อย ๆ มีมากขึ้นเช่นกัน
ตัวผมเองก็เพิ่งพ้นช่วงวัยรุ่นมาได้แค่ 9 เดือนเท่านั้น...
'MacGyver' เป็นละครที่หลายคนน่าจะไม่รู้ว่าเคยมีอยู่จริง แต่ดูเหมือนว่าทุกคนจะเข้าใจคำว่า 'มีด MacGyver' กันหมดครับ
ตอนนี้มันคงอยู่ในระดับเดียวกับสุภาษิตแล้ว แบบนี้ก็คงไม่เป็นไรใช่ไหม? อย่างน้อยคนวัย 20 อย่างผมก็เข้าใจครับ :D
อ่า ถ้าเข้าใจก็ถือว่ายืนยันว่าเป็นรุ่นใหญ่เลยนะ :)