相关疑难解决方法(0)

为什么Ruby没有真正的StringBuffer或StringIO?

我最近阅读了一篇关于在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有点生疏.

ruby string io buffer

52
推荐指数
4
解决办法
3万
查看次数

标签 统计

buffer ×1

io ×1

ruby ×1

string ×1