[Issue 8280] std.array.uninitializedArrayExtend, std.array.initializedArray

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Fri Jun 13 13:10:18 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=8280

bearophile_hugs at eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|std.array.uninitializedArra |std.array.uninitializedArra
                   |yExtend                     |yExtend,
                   |                            |std.array.initializedArray

--- Comment #1 from bearophile_hugs at eml.cc ---
I also suggest to add a "std.array.initializedArray" function similar to
std.array.uninitializedArray, that accepts another extra argument that is the
initialization value or a lambda to fill the array:

This allocated an array of 100 spaces:

auto data = initializedArray!(char[])(100, ' ');

It is equivalent to:

auto data = uninitializedArray!(char[])(100);
data[] = ' ';


Another example usage (note the result is immutable):

immutable data = initializedArray!(int[])(50, i => i);

That is equivalent to (but there is no data_ temporary variable):

auto data_ = uninitializedArray!(int[])(50);
foreach (immutable i; 0 .. 50)
    data_[i] = i;
immutable data = data_.assumeUnique;


Another example usage:

immutable mat = initializedArray!(int[][])(20, 20, (i, j) => i * j);

That is equivalent to (but there is no mat_ temporary variable):

auto mat_ = uninitializedArray!(int[][])(20, 20);
foreach (immutable i; 0 .. 20)
    foreach (immutable j; 0 .. 20)
        mat_[i][j] = i * j;
immutable mat = mat_.assumeUnique;

--


More information about the Digitalmars-d-bugs mailing list