最近、Rubyでの使用に関するすばらしい記事を読みました。StringIO
ただし、著者が言及していないのは、それStringIO
が単なる「私」であるということです。「お」がない。たとえば、次のようにすることはできません。
s = StringIO.new
s << 'foo'
s << 'bar'
s.to_s
# => should be "foo\nbar"
# => really is ''`
Ruby は、Java が持っているのと同じように StringBuffer を実際に必要とします。StringBuffers には 2 つの重要な目的があります。まず、Ruby の StringIO が行うことの半分の出力をテストできます。第二に、それらは小さな部品から長い文字列を構築するのに役立ちます. Joel が何度も私たちに思い出させてくれることは、そうでなければ非常に遅いことです.
良い代替品はありますか?
Ruby の文字列が変更可能であることは事実ですが、それは常にその機能に依存する必要があるという意味ではありません。が大きい場合stuff
、たとえば、これのパフォーマンスとメモリの要件は非常に悪いです。
result = stuff.map(&:to_s).join(' ')
Javaでこれを行う「正しい」方法は次のとおりです。
result = StringBuffer.new("")
for(String s : stuff) {
result.append(s);
}
私のJavaは少し錆びていますが。