मैं रूबी और इस साइट पर नया हूं।स्ट्रिंग ऑपरेटरों के बीच अंतर + और << रूबी
निम्नलिखित दो कार्य भिन्न हैं, एक फ़ंक्शन के बाहर चर बदलता है और कोई नहीं करता है।
def m1 (x)
x << "4"
end
def m2 (x)
x = x + "4"
end
str="123"
m2(str) #str remains unchanged 123
m1(str) #str is changed to 1234
मुझे यकीन है कि मैं इस सही ढंग से समझ बनाने के लिए चाहते हैं -
जब एम 1 कहा जाता है, str के संदर्भ में की नकल की और समारोह जो इसे एक्स के रूप में देखता है के लिए पारित किया गया है। ऑपरेटर < < एक्स बदलता है जो मूल स्ट्रिंग का संदर्भ देता है इसलिए इस ऑपरेशन द्वारा स्ट्र को बदल दिया जाता है।
जब एम 2 कहा जाता है, तो स्ट्र के संदर्भ की प्रतिलिपि बनाई जाती है और इसे फ़ंक्शन में पास किया जाता है जो इसे x के रूप में देखता है। ऑपरेटर + एक नई स्ट्रिंग बनाता है, और असाइनमेंट x = x + "4" बस मूल स्ट्रैर को छूने वाले नए स्ट्रिंग पर एक्स को रीडायरेक्ट करता है।
सही?
धन्यवाद
'एम 2 (str)' '1234" 'वापस लौटना चाहिए, फिर' एम 1 (str) '' 1234 "वापस लौटना चाहिए और उसके बाद' str' '1234" बराबर होगा। क्या आप अपने परिणामों के बारे में निश्चित हैं? – mraaroncruz
मैं 'रूबी 1.9.3p392 'का उपयोग कर रहा हूं और यह मेरे मामले में काम करता है। उन तरीकों से पहले 'रखो' रखो और जांचें। – Davit
@tmpmember आप अपने मामले में "यह काम करता है" का क्या मतलब है? – mraaroncruz