On 10-2-2013 7:14, Simon wrote:
Hi, I'm new to the D programming language. Overall I'm liking
things very much, but I'm still getting the hang of a few things.
Here's a basic programming pattern: I have a class called Thing,
and while I'm coding I decide I need N Thing instances.
In C++ that's a matter of
std::vector<Thing> things(N);
In python, I can use a list comprehension.
things = [Thing() for _ in range(N)]
However, the obvious D version doesn't work.
auto things = new Thing[N];
Because Thing.init is null, this produces an array of null
references. Of course, I can write a for loop to fill in the
array after creation, but this feels very un-D-like. Is there a
straightforward way to create a bunch of class instances?
import std.stdio, std.algorithm;
class Thing {
int i;
this(int i) {
this.i = i;
}
}
void main()
{
auto things = new Thing[10];
fill(things, new Thing(5));
foreach (t; things)
writef("%d ", t.i);
}