在 Sun, 07 Jun 2009 12:59:39 +0800,Sean Kelly <s...@invisibleduck.org> 写道:

Steve Schveighoffer wrote:
On Sat, 06 Jun 2009 12:03:03 -0700, Sean Kelly wrote:

bearophile wrote:
Sean Kelly:
Particularly in D2 where append
operations on arrays are probably less common as a result of string
being invariant.
They aren't much common maybe because they are currently dead-slow.
Appending to an immutable string is a common operation. But I guess
Array appenders will get more common...
Yes but appending to an immutable string is never performed in place,
which is the only time the extra space reserved by newCapacity matters.
  I suspect the memory wasted by newCapacity is more of an issue than
any time savings it provides.
 What gave you that idea?
 void main()
{
  auto str1 = "hello".idup;
  auto str2 = str1;
  str1 ~= "world";
  assert(str1.ptr == str2.ptr);
}

auto str1 = "hello".idup;
auto str2 = str3 = str1;
str2 ~= " world";
str3 ~= " garbage";

Doesn't seem terribly safe to me.

Oh, file a bug report! you find the bug!

--
使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/

Reply via email to