initialization immutable array
Yota via Digitalmars-d
digitalmars-d at puremagic.com
Thu May 15 09:58:02 PDT 2014
On Thursday, 15 May 2014 at 16:13:59 UTC, AntonSotov wrote:
> DMD 2.065
> I do not know much English. sorry.
>
> need to initialize immutable array "_items"
> //-------------------------------------------------------
> module main;
> import std.stdio;
>
> class Zond {
> this() {
> foreach (i; 1..4) {
> _items ~= i; // is expected ERROR
> }
> }
>
> immutable(int[]) _items;
> }
You're only allowed to assign an immutable value in a constructor
once, which is why it doesn't let you do so in a loop. As for
the second example, that looks like a bug to me.
Here are a couple ways to initialize the array:
1:
this() {
import std.exception : assumeUnique;
int[] items;
foreach (i; 1..4) {
items ~= i;
}
_items = items.assumeUnique;
}
2:
this() {
// The result of a pure function may be implicitly cast to
immutable.
_items = function() pure {
int[] items;
foreach (i; 1..4) {
items ~= i;
}
return items;
}();
}
BTW, this would be better suited to the digitalmars.D.learn group.
More information about the Digitalmars-d
mailing list