Ruby:
การใช้แอเรย์สมาชิก
วิธีการ:
การสร้างและใช้แฮชใน Ruby นั้นง่ายดาย คุณสามารถเริ่มต้นด้วยแฮชว่างๆ, เติมคู่คีย์-ค่า, เข้าถึงค่าด้วยคีย์ของมัน, และอื่นๆ นี่คือวิธีที่คุณทำ:
# การสร้างแฮช
my_hash = { "name" => "John Doe", "age" => 30 }
# อีกวิธีหนึ่งในการสร้างแฮช
another_hash = Hash.new
another_hash["position"] = "Developer"
# การเข้าถึงค่าในแฮช
puts my_hash["name"] # ผลลัพธ์: John Doe
# เพิ่มคู่คีย์-ค่าใหม่
my_hash["language"] = "Ruby"
puts my_hash # ผลลัพธ์: {"name"=>"John Doe", "age"=>30, "language"=>"Ruby"}
# การวนซ้ำผ่านแฮช
my_hash.each do |key, value|
puts "#{key}: #{value}"
end
# ผลลัพธ์:
# name: John Doe
# age: 30
# language: Ruby
คุณยังสามารถใช้สัญลักษณ์เป็นคีย์ที่มีประสิทธิภาพมากขึ้น:
# ใช้สัญลักษณ์สำหรับคีย์
symbol_hash = { name: "Jane Doe", age: 22 }
puts symbol_hash[:name] # ผลลัพธ์: Jane Doe
ลงลึก:
แนวคิดของแอสโซซีเอทีฟอาร์เรย์ไม่ใช่เฉพาะเฉพาะของ Ruby; หลายภาษาได้ดำเนินการใช้งานภายใต้ชื่อต่างๆ, เช่น ดิกชันนารีใน Python หรืออ็อบเจคใน JavaScript (เมื่อใช้เป็นคู่คีย์-ค่า) ในช่วงแรกๆ ของ Ruby, แฮชมักจะช้าและไม่หลากหลายเท่าที่ควร อย่างไรก็ตาม, ตามเวลาที่ผ่านไป, การดำเนินการแฮชของ Ruby ได้ถูกปรับให้มีความเหมาะสมอย่างมาก, โดยเฉพาะสำหรับคีย์สัญลักษณ์, ทำให้มีประสิทธิภาพสูงสำหรับการเข้าถึงและอัพเดตอย่างถี่ถ้วน
แฮชของ Ruby โดดเด่นด้วยความง่ายดายในด้านไวยากรณ์การใช้งานและความยืดหยุ่น - คุณสามารถใช้วัตถุประเภทเกือบใดๆ เป็นคีย์ได้, ถึงแม้ว่าสัญลักษณ์และสตริงจะเป็นที่นิยมมากที่สุด ภายใน, แฮชของ Ruby ได้ถูกดำเนินการโดยใช้อัลกอริทึมแฮชชิ่งที่จัดสรรความเร็วและประสิทธิภาพของหน่วยความจำอย่างสมดุล, แม้ว่าจำนวนองค์ประกอบจะเพิ่มขึ้น
ต่อให้แฮชมีความหลากหลายอย่างยิ่งใหญ่, พวกมันไม่ใช่คำตอบสุดท้ายสำหรับการเก็บข้อมูลใน Ruby สำหรับคอลเลกชันที่มีการเรียงลำดับ, อาร์เรย์จะเหมาะสมกว่า, และสำหรับชุดของรายการที่ไม่ซ้ำกัน, Set อาจจะเป็นทางเลือกที่ดีกว่า นอกจากนี้, สำหรับโครงสร้างข้อมูลที่ซับซ้อนมาก, การสร้างคลาสที่กำหนดเองอาจจะเป็นทางเลือกที่ควรพิจารณา
จำไว้, การเลือกใช้แฮชเทียบกับโครงสร้างข้อมูลอื่นๆ ส่วนใหญ่ขึ้นอยู่กับกรณีการใช้งานเฉพาะ—แฮชโดดเด่นในการค้นหาอย่างรวดเร็วและการรักษาความสัมพันธ์ระหว่างคีย์ที่ไม่ซ้ำกับค่าของมัน