我最近读了一个很好的post在Ruby中使用StringIO
。然而作者没有提到的是StringIO
只是一个“I”。没有“O”。您无法做到这一点,例如:为什么Ruby没有真正的StringBuffer或StringIO?
s = StringIO.new
s << 'foo'
s << 'bar'
s.to_s
# => should be "foo\nbar"
# => really is ''`
红宝石确实需要一个StringBuffer就像一个Java有。 StringBuffers有两个重要的用途。首先,他们让你测试Ruby的StringIO的输出结果的一半。其次,它们对于从小部件制造长弦很有用 - Joel一再提醒我们的事情是非常缓慢的。
有没有很好的替代品?
这是真的,字符串在Ruby中是可变的,但是,这并不意味着我们应该永远依靠该功能。例如,如果stuff
很大,那么对此的性能和内存要求就非常糟糕。
result = stuff.map(&:to_s).join(' ')
“正确” 的方式在Java中做到这一点是:
result = StringBuffer.new("")
for(String s : stuff) {
result.append(s);
}
虽然我的Java是一个有点生疏。
“Mega Maid?”从来没有听说过她。从来没有真正相信StringBuffers,但我总是用它们来担心有人看到我的代码。但是,真的,这些东西总合起来了吗? – 2009-05-06 01:53:03
可能是'SpaceBalls'的参考。 – 2010-08-30 16:59:35
巨型女佣已被删除作为摆脱亵渎的附带损害。 – 2011-05-09 03:52:29