" रूबी सिंबल्स को समझना " पढ़ने के बावजूद , जब मैं प्रतीकों का उपयोग करने की बात करता हूं, तो स्मृति में डेटा के प्रतिनिधित्व से मैं अभी भी भ्रमित हूं। यदि एक प्रतीक, उनमें से दो अलग-अलग वस्तुओं में समाहित हैं, एक ही मेमोरी लोकेशन में मौजूद हैं, तो यह कैसे होता है कि उनमें अलग-अलग मूल्य होते हैं? मैंने समान मान को सम्मिलित करने के लिए समान मेमोरी स्थान की अपेक्षा की है।
इस लिंक से एक उद्धरण:
स्ट्रिंग्स के विपरीत, एक ही नाम के प्रतीकों को आरंभीकृत किया जाता है और रूबी के सत्र के दौरान केवल एक बार मेमोरी में मौजूद होता है
मुझे समझ में नहीं आता कि यह एक ही मेमोरी लोकेशन में निहित मूल्यों को कैसे अलग करता है।
इस उदाहरण पर विचार करें:
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"
?
एक सेकंड के लिए हैश को भूल जाना, मैं सोच रहा हूं कि एक प्रतीक एक मूल्य का सूचक है। मेरे पास जो प्रश्न हैं:
- क्या मैं एक प्रतीक को एक मूल्य प्रदान कर सकता हूं?
- क्या एक प्रतीक केवल एक चर के लिए एक संकेतक है जिसमें एक मान है?
- यदि प्रतीक वैश्विक हैं, तो क्या इसका मतलब यह है कि एक प्रतीक हमेशा एक चीज की ओर इशारा करता है?
puts patient1[:ruby]
, तो यह "लाल" प्रिंट करेगा, यदि आप कहते हैंputs patient2[:ruby]
, तो यह "प्रोग्रामिंग" प्रिंट करेगा।