วิธีทำความเข้าใจสัญลักษณ์ใน Ruby
แม้จะอ่าน "การทำความเข้าใจสัญลักษณ์ทับทิม " แต่ฉันก็ยังสับสนกับการแสดงข้อมูลในหน่วยความจำเมื่อต้องใช้สัญลักษณ์ หากสัญลักษณ์สองสัญลักษณ์ที่อยู่ในวัตถุต่างกันมีอยู่ในตำแหน่งหน่วยความจำเดียวกันแล้วสัญลักษณ์นั้นมีค่าต่างกันอย่างไร? ฉันคาดว่าตำแหน่งหน่วยความจำเดียวกันจะมีค่าเดียวกัน นี่เป็นคำพูดจากลิงค์: ซึ่งแตกต่างจากสตริงสัญลักษณ์ที่มีชื่อเดียวกันจะเริ่มต้นและมีอยู่ในหน่วยความจำเพียงครั้งเดียวในระหว่างเซสชันของทับทิม ฉันไม่เข้าใจวิธีจัดการเพื่อแยกความแตกต่างของค่าที่อยู่ในตำแหน่งหน่วยความจำเดียวกัน ลองพิจารณาตัวอย่างนี้: patient1 = { :ruby => "red" } patient2 = { :ruby => "programming" } patient1.each_key {|key| puts key.object_id.to_s} 3918094 patient2.each_key {|key| puts key.object_id.to_s} 3918094 patient1และpatient2เป็นแฮชทั้งคู่ก็ใช้ได้ :rubyอย่างไรก็ตามเป็นสัญลักษณ์ หากเราจะแสดงผลลัพธ์ต่อไปนี้: patient1.each_key {|key| puts key.to_s} แล้วจะเอาท์พุทอะไร? "red", หรือ"programming"? เมื่อลืมแฮชไปสักวินาทีฉันคิดว่าสัญลักษณ์เป็นตัวชี้ค่า คำถามที่ฉันมีคือ: ฉันสามารถกำหนดค่าให้กับสัญลักษณ์ได้หรือไม่? สัญลักษณ์เป็นเพียงตัวชี้ไปยังตัวแปรที่มีค่าอยู่หรือไม่? หากสัญลักษณ์เป็นสากลหมายความว่าสัญลักษณ์ชี้ไปที่สิ่งหนึ่งเสมอหรือไม่?