On 02.06.19 04:22, David Zhang wrote:
On Saturday, 1 June 2019 at 13:00:50 UTC, ag0aep6g wrote:
How is setting/replacing different from modifying?
e.g.:
S s;
this() { s = ...; }
update(S s) { this.s = s; }
mod(int i) { s.i = i; } // illegal
Kinda like how strings can be copied and assigned to, but not modified.
The `string` itself can be modified: You can change its length, and you
can make it refer to other characters. That's modifying.
You can't modify the string's characters, because the string refers to
them with an `immutable(char)*` pointer. That means the pointer itself
is mutable (can be modified), but the data it points to is immutable
(can't be modified).
You can do the same in your struct: `const(char)* pointer;`. Then you
can modify the pointer but you can't modify the data it points to.