On 5/17/15 5:15 AM, Dennis Ritchie wrote:
This option is also a strange:
char[][] s = ["foo".dup, "bar".dup];
s[1][1] = 't';
In my opinion, you need to add to D keyword mutable.
It's annoying to have to dup each one.
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
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.
-Steve