2009-01-23 13 views
9

यह हो सकता है एक nooby सवाल का एक सा है, मैं हाल ही में माणिक में बेहतर होने की कोशिश कर रहा है, और शुरू कर दिया शानदार The Ruby Programming Language पढ़ने। कुछ है कि उल्लेख किया गया था कि स्ट्रिंग शाब्दिक परिवर्तनशील माना जाता है, इसलिए एक पाश में यह रूप में एक नया स्ट्रिंग हर यात्रा पर instantiated हो जाएगी, तो एक शाब्दिक एक चर का उपयोग करने के लिए बेहतर है।रूबी स्ट्रिंग अस्थिरता

मेरा प्रश्न है क्यों? पहले मैंने सोचा कि यह इंटरपोलेशन की वजह से था, लेकिन प्रतीक अपरिवर्तनीय हैं और वे इंटरपोलेशन का समर्थन करते हैं। एक स्थिर पृष्ठभूमि से आ रहा है, यह वास्तव में मुझे ज्यादा समझ में नहीं आता है।

संपादित करें:

thenduks जवाब पढ़ने के बाद, मुझे लगता है कि मैं इसे कर सकते हैं। AFAIK, जावा या सी # जैसी भाषाओं विनाशकारी स्ट्रिंग तरीकों की जरूरत नहीं है (वे upcase उपयोग करें, लेकिन upcase नहीं!)। उपज की तरह चीजों की वजह से! या < <, शाब्दिक अपरिवर्तनीय नहीं हो सकता।

नहीं 100% है कि पर यकीन है, अन्य संभावना है कि यह जो कुछ है कि सिर्फ एक पटकथा भाषा में ऐसा नहीं होता है एक संकलन समय होना शामिल ऐसा होता है, होता है।

उत्तर

7

नहीं वास्तव में यकीन है कि वास्तव में अपने प्रश्न है कि क्या है, लेकिन निम्नलिखित कोड पर विचार करें:

10.times { puts "abc".object_id } 

यह बाहर प्रिंट 10 विभिन्न पहचान-पत्र। क्यूं कर? सिर्फ इसलिए कि आप जानते हैं कि इस स्ट्रिंग में बदलाव नहीं है इसका मतलब रूबी करता है। आपको लगता है कि "abc" केवल एक बार तो क्या हुआ अगर आप ऐसा करेंगे होता बनाया जाना चाहिए, तो:

10.times { puts "abc".upcase! } 

upcase! विधि स्ट्रिंग mutates अपर केस हो सकता है, अगले चरण पर स्ट्रिंग पहली यात्रा में नहीं बनाई गई है वही

शायद एक कोड उदाहरण है कि आप करने के लिए भ्रामक पोस्ट?

+0

सवाल का थोड़ा अधिक जोड़ा, और एक +1 दिया :) –

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