Ali Çehreli:

auto app = appender!(ubyte[])();
app.put(cast(ubyte)40);
app.put(cast(ubyte)5);
app.put(cast(ubyte)234);
// ... add 5 times 0

A fancy way: :)

import std.range;

// ...

    app.put(repeat(cast(ubyte)0).take(5));

Now we have a better syntax for implicit casts:

void main() {
    import std.array, std.range;
    Appender!(ubyte[]) app;
    app.put(ubyte(0).repeat.take(5));
}


Single line, but not lazy:

void main() {
    import std.array, std.range;
    Appender!(ubyte[]) app = ubyte(0).repeat.take(5).array;
}


But I have a question too. What's the best way to append several lazy items to a dynamic array? This doesn't work:

void main() {
    import std.array, std.range;
    int[] arr;
    arr.put(only(1, 2, 3));
}

Bye,
bearophile

Reply via email to