2012-05-29 16 views
5

रूबी दस्तावेज़ीकरण ब्राउज़ करते समय, मुझे the replace method मिला, लेकिन मुझे पता नहीं लगा कि इस विधि का उपयोग केस क्या हो सकता है।रुबी में एक स्ट्रिंग # प्रतिस्थापन क्यों है?

एकमात्र चीज जो मैं सोच सकता हूं वह स्मृति प्रबंधन के बारे में है (कुछ स्ट्रिंग की आवश्यकता नहीं है यदि नई स्ट्रिंग की लंबाई कम या बराबर हो)।

कोई विचार?

उत्तर

3

उपयोग के मामले वास्तव में सिर्फ अगर आप बहुत कुछ हासिल करना चाहते हैं पास-संदर्भ द्वारा अन्य भाषाओं में है, जहां एक वेरिएबल का मान सीधे बदला जा सकता है। तो आप एक स्ट्रिंग को एक विधि में पास कर सकते हैं और वह विधि पूरी तरह से स्ट्रिंग को किसी अन्य चीज़ में बदल सकती है।

स्ट्रिंग को खाली करके और खाली स्ट्रिंग में कुछ नई स्ट्रिंग जोड़कर, आप एक ही चीज को एक और गोल-ए-बाउट तरीके से प्राप्त कर सकते हैं। अन्य वर्गों में समान तरीके हैं (ऐरे और हैश देखें)।

यदि आप स्वयं को इन तरीकों का उपयोग करने की आवश्यकता महसूस करते हैं, तो संभावना है कि आपने स्वयं को कोने में बैक किया है और एक से अधिक तरीके से खोजना चाहिए जिसके लिए एक संपूर्ण स्ट्रिंग को म्यूट करना आवश्यक है (उदाहरण के लिए डेटा संरचना पास करें एक स्ट्रिंग के बजाय, एक विधि में)।

+0

यह लिंक समझने में उपयोगी है कि ऐसी विधि उपयोगी क्यों है: http://stackoverflow.com/questions/1872110/is-ruby-pass-by-reference-or-by-value – Scharron

2

एक पूरी स्ट्रिंग, के रूप में सबस्ट्रिंग करने का विरोध किया, की जगह पद्धति का उपयोग करके प्रतिस्थापित किया जा सकता: "आपका स्वागत है पीएचपी करने के लिए"

myString = "Welcome to PHP!" 

=>

myString.replace "Goodbye to PHP!" 

=> "PHP से अलविदा!"

स्रोत - http://www.techotopia.com/index.php/Ruby_String_Replacement,_Substitution_and_Insertion#Changing_a_Section_of_a_String

+0

हाँ, लेकिन ऐसा करने का क्या मतलब है? 'myString =" Hello "'के बाद' myString =" world "' वही करता है (शायद स्मृति प्रबंधन के लिए छोड़कर?) – Scharron

+1

@Scharron: नहीं, यह दूरस्थ रूप से भी ऐसा नहीं करता है। 'स्ट्रिंग # प्रतिस्थापन' स्ट्रिंग ऑब्जेक्ट की सामग्री को प्रतिस्थापित करता है। आप जो कर रहे हैं वह एक ही चर के लिए पूरी तरह से अलग, पूरी तरह से असंबंधित स्ट्रिंग असाइन कर रहा है। –

+0

@ जोर्ग डमिटाग: हाँ, मैं अंततः समझ गया (स्वीकृत उत्तर देखें)। – Scharron

संबंधित मुद्दे