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