How to create a mutable array of strings?
Dennis Ritchie via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon May 18 08:02:36 PDT 2015
On Monday, 18 May 2015 at 14:43:33 UTC, Steven Schveighoffer
wrote:
> Right, you'd apply the map/array combo to each element:
Yes, I knew it.
> alias m = map!(a => a.dup); // too bad can't do array as well
>
> auto s = [m(["foo", "baz"]).array, m(["bar", "test"]).array];
>
> Or to get even more crazy:
>
> auto s = map!(a => map!(a => a.dup)(a).array)(/* your input
> array */).array;
Imagine a five-dimensional array will be :)
> But this means you are duping more of the array literal than
> you really should.
>
> It's likely helpful to have somewhere in std.array a dupArray
> function that does map!(a => a.dup).array work in one go (and
> without making a temporary array):
>
> auto s = [dupArray("foo", "baz"), dupArray("bar", "test")];
Yes, it would be nice. I believe that Phobos need such function.
> deepDup would dup the whole thing. All you need to dup is the
> string literals, as array literals constructed at runtime are
> on the heap (and mutable) already. The literal already is
> wasted even in my original suggestion, but this is doubly
> wasteful.
Right.
More information about the Digitalmars-d-learn
mailing list