On 02/09/2013 10:14 PM, 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?
Here is one way: import std.stdio; import std.range; import std.algorithm; class Thing { int i; this(int i) { this.i = i; } } void main() { auto things = iota(10).map!(i => new Thing(i))().array; } Ali -- D Programming Language Tutorial: http://ddili.org/ders/d.en/index.html