Re: Trying to understand a simple piece of code: dmd barray
On Saturday, 7 March 2020 at 14:33:29 UTC, Steven Schveighoffer wrote: It's D's version of implicit conversion. You can make the alias this a no-arg function and it will try calling that function. Okay thank you.
Re: Trying to understand a simple piece of code: dmd barray
On Saturday, 7 March 2020 at 13:06:39 UTC, Dibyendu Majumdar wrote: On Saturday, 7 March 2020 at 12:26:32 UTC, drug wrote: I am trying to understand https://github.com/dlang/dmd/blob/master/src/dmd/backend/barray.d. Two questions: 1. What does this mean and why is it needed? line 95: alias array this; This means that `array` can be used instead of `this` Hmm should not that change the meaning of this throughout the struct? is this good practice? Thank you This is also a way of imitating inheritance in c-ish code without classes.
Re: Trying to understand a simple piece of code: dmd barray
On 3/7/20 8:06 AM, Dibyendu Majumdar wrote: On Saturday, 7 March 2020 at 12:26:32 UTC, drug wrote: I am trying to understand https://github.com/dlang/dmd/blob/master/src/dmd/backend/barray.d. Two questions: 1. What does this mean and why is it needed? line 95: alias array this; This means that `array` can be used instead of `this` Hmm should not that change the meaning of this throughout the struct? is this good practice? No, it's simply a fallback. If the symbol doesn't work with this.symbol, try this.array.symbol. It's D's version of implicit conversion. You can make the alias this a no-arg function and it will try calling that function. -Steve
Re: Trying to understand a simple piece of code: dmd barray
On Saturday, 7 March 2020 at 12:26:32 UTC, drug wrote: I am trying to understand https://github.com/dlang/dmd/blob/master/src/dmd/backend/barray.d. Two questions: 1. What does this mean and why is it needed? line 95: alias array this; This means that `array` can be used instead of `this` Hmm should not that change the meaning of this throughout the struct? is this good practice? Thank you
Re: Trying to understand a simple piece of code: dmd barray
On 3/7/20 7:26 AM, drug wrote: 07.03.2020 15:05, Dibyendu Majumdar пишет: Hi, I am trying to understand https://github.com/dlang/dmd/blob/master/src/dmd/backend/barray.d. Two questions: 1. What does this mean and why is it needed? line 95: alias array this; This means that `array` can be used instead of `this` To expand on this, the compiler basically substitutes the symbol aliased here for the item itself if all other members are a compiler error. So for example, if you have: barr.length; and barr has no member length, it tries: barr.array.length -Steve
Re: Trying to understand a simple piece of code: dmd barray
07.03.2020 15:05, Dibyendu Majumdar пишет: Hi, I am trying to understand https://github.com/dlang/dmd/blob/master/src/dmd/backend/barray.d. Two questions: 1. What does this mean and why is it needed? line 95: alias array this; This means that `array` can be used instead of `this` 2. The struct has no property called length - but this is referenced. Where does this come from? it comes from `array` being alias for `this`, see above Thank you Regards
Trying to understand a simple piece of code: dmd barray
Hi, I am trying to understand https://github.com/dlang/dmd/blob/master/src/dmd/backend/barray.d. Two questions: 1. What does this mean and why is it needed? line 95: alias array this; 2. The struct has no property called length - but this is referenced. Where does this come from? Thank you Regards