On 6/11/15 7:51 AM, Daniel Kozák via Digitalmars-d-learn wrote:

On Thu, 11 Jun 2015 11:43:25 +0000
via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:

On Thursday, 11 June 2015 at 08:33:46 UTC, Daniel Kozák wrote:
On Wed, 10 Jun 2015 20:22:17 +0000
Adel Mamin via Digitalmars-d-learn
<digitalmars-d-learn@puremagic.com>
wrote:

ubyte[5] a = 0xAA; // Fine. Five 0xAA bytes.
auto a2 = new ubyte[5]; // Fine. Five 0 bytes.
Now, let's say, I want to allocate an array of a size, derived
at run time, and initialize it to some non-zero value at the
same time. What would be the shortest way of doing it?

import std.stdio;

struct Ubyte(ubyte defval) {
     ubyte v = defval;
     alias v this;
}

void main() {
        auto a2 = new Ubyte!(0xAA)[5];
        writeln(a2);
}

I like this one :-)

small enhancment:
struct Ubyte(ubyte defval = 0)

import std.typecons;

alias Ubyte(ubyte defval = 0) = Typedef!(ubyte, defval);

I personally like the range solution the best, it has the most flexibility.

-Steve

Reply via email to