initialization immutable array
AntonSotov via Digitalmars-d
digitalmars-d at puremagic.com
Thu May 15 11:18:03 PDT 2014
On Thursday, 15 May 2014 at 17:15:50 UTC, Steven Schveighoffer
wrote:
> Assign _items only once in the constructor.
>
> immutable(int)[] tmp;
>
> foreach(i; 1..4)
> tmp ~= i;
>
> _items = tmp;
thanks for example!
On Thursday, 15 May 2014 at 17:15:50 UTC, Steven Schveighoffer
wrote:
> This should not work IMO.
My second example compiles successfully and displays the correct
result - that's why I became interested in why it works.
you can compile yourself.
On Thursday, 15 May 2014 at 16:58:04 UTC, Yota wrote:
> 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;
> }();
> }
thanks for example!
On Thursday, 15 May 2014 at 16:58:04 UTC, Yota wrote:
> As for the second example, that looks like a bug to me.
if this is actually a bug - will be good if someone could
register it.
More information about the Digitalmars-d
mailing list