Thread overview | |||||
---|---|---|---|---|---|
|
May 11, 2015 Error: cannot modify struct arr[0] MyStruct with immutable members | ||||
---|---|---|---|---|
| ||||
struct MyStruct { this(int a, int b) { this.a = a; this.b = b; } immutable int a; immutable int b; } void main(string[] args) { MyStruct[] arr = new MyStruct[3]; arr[0] = MyStruct(5, 7); } Why does it happen? |
May 11, 2015 Re: Error: cannot modify struct arr[0] MyStruct with immutable members | ||||
---|---|---|---|---|
| ||||
Posted in reply to ref2401 | On Monday, 11 May 2015 at 13:37:27 UTC, ref2401 wrote:
> Why does it happen?
You'd just be writing to the immutable memory through a different name.
Consider if someone took a reference to one of those immutable ints, expecting it to never change. Then you wrote a new struct over the same location with different values. Then the ints pointed to by that reference suddenly change, despite allegedly being immutable!
Assigning a struct in-place is the same as assigning all its members.
|
May 11, 2015 Re: Error: cannot modify struct arr[0] MyStruct with immutable members | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Monday, 11 May 2015 at 13:44:14 UTC, Adam D. Ruppe wrote:
> On Monday, 11 May 2015 at 13:37:27 UTC, ref2401 wrote:
>> Why does it happen?
>
> You'd just be writing to the immutable memory through a different name.
>
> Consider if someone took a reference to one of those immutable ints, expecting it to never change. Then you wrote a new struct over the same location with different values. Then the ints pointed to by that reference suddenly change, despite allegedly being immutable!
>
> Assigning a struct in-place is the same as assigning all its members.
Got it. Thank you.
|
Copyright © 1999-2021 by the D Language Foundation