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