why is it a class property cannot be used like a.b ~= c; ?
jfondren
julian.fondren at gmail.com
Sat Sep 4 23:57:09 UTC 2021
On Saturday, 4 September 2021 at 23:33:39 UTC, someone wrote:
> ```d
> public class cSomething {
>
> private:
>
> dstring pstrWhatever = null;
>
> public:
>
> @safe dstring whatever() { return pstrWhatever; }
> @safe void whatever(const dstring lstrWhatever) {
> pstrWhatever = lstrWhatever; }
>
> }
>
> void main() {
>
> cSomething lobjSomething = new cSomething();
> lobjSomething.whatever = r"abc"d;
> lobjSomething.whatever ~= r"def"d; /// Error:
> `lobjSomething.whatever()` is not an lvalue and cannot be
> modified
>
> }
> ```
You're returning a copy of a slice, so if this compiled nothing
useful would happen anyway. This works if `whatever()` returns
`ref dstring` instead, with no other changes. Search
https://dlang.org/spec/function.html for 'lvalue' and this pops
right up.
More information about the Digitalmars-d-learn
mailing list