我最近读了一篇关于在Ruby中使用StringIO
的不错的post篇文章.然而,作者没有提到的是,StringIO
只是一个"I".没有"O".你可以这样做,例如:
s = StringIO.new
s << 'foo'
s << 'bar'
s.to_s
# => should be "foo\nbar"
# => really is ''`
Ruby真的需要一个与Java一样的StringBuffer.StringBuffers有两个重要用途.首先,它们让你测试Ruby的StringIO的一半输出.其次,它们有助于从小部分构建长弦——乔尔反复提醒我们的是,否则速度会非常慢.
有好的替代品吗?
Ruby中的字符串确实是可变的,但这并不意味着我们应该始终依赖于该功能.例如,如果stuff
很大,那么它的性能和内存需求就非常糟糕.
result = stuff.map(&:to_s).join(' ')
在Java中实现这一点的"正确"方法是:
result = StringBuffer.new("")
for(String s : stuff) {
result.append(s);
}
虽然我的Java有点Rust .