मैं रूबी दुनिया के लिए पूरी तरह से नया हूं, और मैं प्रतीकों की अवधारणा के साथ थोड़ा भ्रमित हूं। प्रतीकों और चर के बीच अंतर क्या है? सिर्फ चर का उपयोग क्यों नहीं?
धन्यवाद।
मैं रूबी दुनिया के लिए पूरी तरह से नया हूं, और मैं प्रतीकों की अवधारणा के साथ थोड़ा भ्रमित हूं। प्रतीकों और चर के बीच अंतर क्या है? सिर्फ चर का उपयोग क्यों नहीं?
धन्यवाद।
जवाबों:
चर और प्रतीक अलग-अलग चीजें हैं। एक चर विभिन्न प्रकार के डेटा को इंगित करता है। रूबी में, एक प्रतीक एक चर की तुलना में एक स्ट्रिंग की तरह अधिक है।
रूबी में, एक स्ट्रिंग उत्परिवर्तनीय है, जबकि एक प्रतीक अपरिवर्तनीय है। इसका मतलब है कि प्रतीक की केवल एक प्रति बनाने की आवश्यकता है। इस प्रकार, यदि आपके पास है
x = :my_str
y = :my_str
:my_str
केवल एक बार बनाया जाएगा, और x
और y
स्मृति का एक ही क्षेत्र के लिए बिंदु। दूसरी ओर, यदि आपके पास है
x = "my_str"
y = "my_str"
स्ट्रिंग वाली my_str
बनाया जाएगा दो बार , और x
और y
विभिन्न उदाहरणों को इंगित करेंगे।
नतीजतन, प्रतीकों को अक्सर रूबी में enums के बराबर के साथ-साथ एक शब्दकोश (हैश) की कुंजी के रूप में उपयोग किया जाता है।
#mySymbol
।
रूबी में प्रतीक मूल रूप से वास्तविक दुनिया में प्रतीक के समान है। इसका उपयोग किसी चीज को दर्शाने या नाम देने के लिए किया जाता है।
उदाहरण के लिए, प्रतीकों को आमतौर पर किसी प्रकार के राज्य का प्रतिनिधित्व करने के लिए उपयोग किया जाता है
order.status = :canceled
order.status = :confirmed
आप प्रतीक को तत्काल एनम के रूप में भी देख सकते हैं। आपको एक प्रतीक को परिभाषित करने की आवश्यकता नहीं है, आप इसका उपयोग करते हैं। यह लेख इसे काफी विस्तार से बताता है।
आमतौर पर, चर स्ट्रिंग के साथ भ्रमित होते हैं, लेकिन मैं आपको एक चर की तरह सोचकर समझ सकता हूं। यह समझने लायक है। इस पर इस तरीके से विचार करें:
एक खेल में एक खिलाड़ी की स्थिति को एक संख्या द्वारा दर्शाया जाता है। 1 का अर्थ है जीवित, 2 का अर्थ है अनिश्चित, 3 का अर्थ है मृत। इसे आसानी से प्रतीकों द्वारा प्रतिस्थापित किया जा सकता है। प्रतीक :alive
:unsure
और हो सकते हैं :dead
। यह जाँचने के लिए कि कोई खिलाड़ी जीवित है, इसके बजाय:
if player_status == 1
आप ऐसा कर सकते हैं:
if player_status == :alive