我最近阅读了一篇关于在 Ruby中使用的好文章。StringIO
然而,作者没有提到的是,这StringIO
只是一个“我”。没有“O”。你不能这样做,例如:
s = StringIO.new
s << 'foo'
s << 'bar'
s.to_s
# => should be "foo\nbar"
# => really is ''`
Ruby 确实需要一个 StringBuffer,就像 Java 一样。StringBuffers 有两个重要用途。首先,它们让您测试 Ruby 的 StringIO 所做的输出的一半。其次,它们对于从小部分构建长弦很有用——乔尔一遍又一遍地提醒我们的东西是非常非常缓慢的。
有没有好的替代品?
Ruby 中的字符串确实是可变的,但这并不意味着我们应该始终依赖该功能。如果stuff
很大,例如这对性能和内存的要求真的很差。
result = stuff.map(&:to_s).join(' ')
在 Java 中执行此操作的“正确”方法是:
result = StringBuffer.new("")
for(String s : stuff) {
result.append(s);
}
虽然我的 Java 有点生疏。