मैंने हाल ही में एक अच्छा पोस्ट पढ़ा है रुबी में StringIO
का उपयोग करना। लेखक का उल्लेख नहीं है, हालांकि, यह है कि StringIO
सिर्फ एक "I." है। कोई "ओ" नहीं है आप नहीं कर सकते ऐसा करते हैं, उदाहरण के लिए:
s = StringIO.new
s << 'foo'
s << 'bar'
s.to_s
# => should be "foo\nbar"
# => really is ''`
रुबी को वास्तव में एक जावा की तरह स्ट्रिंगबफर की आवश्यकता होती है। स्ट्रिंगबफर दो महत्वपूर्ण उद्देश्यों की सेवा करते हैं। सबसे पहले, वे आपको रुबी के स्ट्रिंगियो के आउटपुट आधे का परीक्षण करने देते हैं। दूसरा, वे छोटे हिस्सों से लंबे तारों के निर्माण के लिए उपयोगी हैं - जोएल जो हमें बार-बार याद दिलाता है वह अन्यथा बहुत धीमा है।
क्या कोई अच्छा प्रतिस्थापन है?
यह सच है कि रूबी में स्ट्रिंग्स म्यूटेबल हैं, लेकिन इसका मतलब यह नहीं है कि हमें हमेशा उस कार्यक्षमता पर भरोसा करना चाहिए। यदि सामान
बड़ा है, तो इसका प्रदर्शन और स्मृति आवश्यकताएं, उदाहरण के लिए, वास्तव में खराब है।
result = stuff.map(&:to_s).join(' ')
जावा में ऐसा करने का "सही" तरीका है:
result = StringBuffer.new("")
for(String s : stuff) {
result.append(s);
}
हालांकि मेरा जावा थोड़ा जंगली है।