On Monday, 18 May 2015 at 13:14:38 UTC, Steven Schveighoffer
wrote:
It's annoying to have to dup each one.
Yes, it's really annoying. However, the problem can be solved as
follows:
http://forum.dlang.org/thread/owxweucyzjwugpjwh...@forum.dlang.org?page=2#post-cqjevoldkqdkmdbenkul:40forum.dlang.org
On Monday, 18 May 2015 at 13:14:38 UTC, Steven Schveighoffer
wrote:
But, you do have a couple other possibilities:
auto s = ["foo".dup, "bar".dup];
import std.algorithm : map;
import std.array : array;
auto s = map!(a => a.dup)(["foo", "bar"]).array; // this will
needlessly allocate an array for the strings
Now imagine that you have a multi-dimensional array of strings.
This will not work:
auto s = map!(a => a.dup)([["foo", "baz"], ["bar",
"test"]]).array;
You have to apply to each line .dup :)
auto s = [["foo".dup, "baz".dup], ["bar".dup, "test".dup]];
s[1][0][1] = 't';
On Monday, 18 May 2015 at 13:14:38 UTC, Steven Schveighoffer
wrote:
But really, a string is immutable. There's not a way around
that. A string is the most basic level of array primitive, not
even mutable arrays of non-char types have that, and it's an
annoyance. From there, you have to build the data out of ROM
into the heap.
Thank you. I do not know.
And yet, the problem is easily solved. You just have to add
.deepDup Phobos:
http://forum.dlang.org/thread/owxweucyzjwugpjwh...@forum.dlang.org?page=2#post-cqjevoldkqdkmdbenkul:40forum.dlang.org