digitalmars.D.learn - Accessing this of containing class
- Mandeep Singh Brar (12/12) Feb 02 2011 Hi,
- Jonathan M Davis (9/20) Feb 02 2011 The outer class is referenced via the property outer. However, if the in...
- Jacob Carlborg (5/25) Feb 03 2011 Just to add a note, you have to access the property via "this":
- Jonathan M Davis (4/35) Feb 03 2011 That, I did not know. But I've never actually used an inner class in D t...
- Steven Schveighoffer (5/44) Feb 03 2011 I have noticed that, is that a bug? I always thought it strange, since ...
- Ary Manzana (2/47) Feb 03 2011 I don't think outer is a keyword.
- Jonathan M Davis (4/61) Feb 03 2011 It's not a keyword. It's a property of non-static inner classes. It's li...
- Steven Schveighoffer (7/19) Feb 03 2011 You're right, it isn't. My text editor highlights it like it is, so I
Hi, Is there a method to access this reference of the container class from an inner class. i.e. class A { class B { methodM() { callAnotherM(A::this or A.this); } } } Thanks Mandeep
Feb 02 2011
On Wednesday 02 February 2011 21:26:00 Mandeep Singh Brar wrote:Hi, Is there a method to access this reference of the container class from an inner class. i.e. class A { class B { methodM() { callAnotherM(A::this or A.this); } } }The outer class is referenced via the property outer. However, if the inner class is static, then it has no such property and is not tied to a specific instance of the outer class. In such a case, it can access the private members of an instance of the outer class, but it's not tied to an particular instance. Non-static inner classes (like yours above), however, _are_ tied to a particular instance of the outer class, and they have the outer property which is the this of the outer class. - Jonathan M Davis
Feb 02 2011
On 2011-02-03 07:21, Jonathan M Davis wrote:On Wednesday 02 February 2011 21:26:00 Mandeep Singh Brar wrote:Just to add a note, you have to access the property via "this": this.outer -- /Jacob CarlborgHi, Is there a method to access this reference of the container class from an inner class. i.e. class A { class B { methodM() { callAnotherM(A::this or A.this); } } }The outer class is referenced via the property outer. However, if the inner class is static, then it has no such property and is not tied to a specific instance of the outer class. In such a case, it can access the private members of an instance of the outer class, but it's not tied to an particular instance. Non-static inner classes (like yours above), however, _are_ tied to a particular instance of the outer class, and they have the outer property which is the this of the outer class. - Jonathan M Davis
Feb 03 2011
On Thursday 03 February 2011 00:38:08 Jacob Carlborg wrote:On 2011-02-03 07:21, Jonathan M Davis wrote:That, I did not know. But I've never actually used an inner class in D thus far. I just read what TDPL says on it, and obviously I missed that point. Thanks. - Jonathan M DavisOn Wednesday 02 February 2011 21:26:00 Mandeep Singh Brar wrote:Just to add a note, you have to access the property via "this": this.outerHi, Is there a method to access this reference of the container class from an inner class. i.e. class A { class B { methodM() { callAnotherM(A::this or A.this); } } }The outer class is referenced via the property outer. However, if the inner class is static, then it has no such property and is not tied to a specific instance of the outer class. In such a case, it can access the private members of an instance of the outer class, but it's not tied to an particular instance. Non-static inner classes (like yours above), however, _are_ tied to a particular instance of the outer class, and they have the outer property which is the this of the outer class. - Jonathan M Davis
Feb 03 2011
On Thu, 03 Feb 2011 03:43:43 -0500, Jonathan M Davis <jmdavisProg gmx.com> wrote:On Thursday 03 February 2011 00:38:08 Jacob Carlborg wrote:I have noticed that, is that a bug? I always thought it strange, since outer is a keyword, that you need to do this.outer. -SteveOn 2011-02-03 07:21, Jonathan M Davis wrote:That, I did not know. But I've never actually used an inner class in D thus far. I just read what TDPL says on it, and obviously I missed that point. Thanks.On Wednesday 02 February 2011 21:26:00 Mandeep Singh Brar wrote:to aHi, Is there a method to access this reference of the container class from an inner class. i.e. class A { class B { methodM() { callAnotherM(A::this or A.this); } } }The outer class is referenced via the property outer. However, if the inner class is static, then it has no such property and is not tiedspecific instance of the outer class. In such a case, it can accesstheprivate members of an instance of the outer class, but it's not tiedtoan particular instance. Non-static inner classes (like yours above), however, _are_ tied to a particular instance of the outer class, and they have the outer property which is the this of the outer class. - Jonathan M DavisJust to add a note, you have to access the property via "this": this.outer
Feb 03 2011
On 2/3/11 10:29 AM, Steven Schveighoffer wrote:On Thu, 03 Feb 2011 03:43:43 -0500, Jonathan M Davis <jmdavisProg gmx.com> wrote:I don't think outer is a keyword.On Thursday 03 February 2011 00:38:08 Jacob Carlborg wrote:I have noticed that, is that a bug? I always thought it strange, since outer is a keyword, that you need to do this.outer. -SteveOn 2011-02-03 07:21, Jonathan M Davis wrote:That, I did not know. But I've never actually used an inner class in D thus far. I just read what TDPL says on it, and obviously I missed that point. Thanks.On Wednesday 02 February 2011 21:26:00 Mandeep Singh Brar wrote:to aHi, Is there a method to access this reference of the container class from an inner class. i.e. class A { class B { methodM() { callAnotherM(A::this or A.this); } } }The outer class is referenced via the property outer. However, if the inner class is static, then it has no such property and is not tiedspecific instance of the outer class. In such a case, it can accesstheprivate members of an instance of the outer class, but it's nottied toan particular instance. Non-static inner classes (like yours above), however, _are_ tied to a particular instance of the outer class, and they have the outer property which is the this of the outer class. - Jonathan M DavisJust to add a note, you have to access the property via "this": this.outer
Feb 03 2011
On Thursday, February 03, 2011 10:36:29 Ary Manzana wrote:On 2/3/11 10:29 AM, Steven Schveighoffer wrote:It's not a keyword. It's a property of non-static inner classes. It's like length on an array. It's always there, but it's not a keyword. - Jonathan M DavisOn Thu, 03 Feb 2011 03:43:43 -0500, Jonathan M Davis <jmdavisProg gmx.com> wrote:I don't think outer is a keyword.On Thursday 03 February 2011 00:38:08 Jacob Carlborg wrote:I have noticed that, is that a bug? I always thought it strange, since outer is a keyword, that you need to do this.outer. -SteveOn 2011-02-03 07:21, Jonathan M Davis wrote:That, I did not know. But I've never actually used an inner class in D thus far. I just read what TDPL says on it, and obviously I missed that point. Thanks.On Wednesday 02 February 2011 21:26:00 Mandeep Singh Brar wrote:to aHi, Is there a method to access this reference of the container class from an inner class. i.e. class A { class B { methodM() { callAnotherM(A::this or A.this); } } }The outer class is referenced via the property outer. However, if the inner class is static, then it has no such property and is not tiedspecific instance of the outer class. In such a case, it can accesstheprivate members of an instance of the outer class, but it's nottied toan particular instance. Non-static inner classes (like yours above), however, _are_ tied to a particular instance of the outer class, and they have the outer property which is the this of the outer class. - Jonathan M DavisJust to add a note, you have to access the property via "this": this.outer
Feb 03 2011
On Thu, 03 Feb 2011 13:53:22 -0500, Jonathan M Davis <jmdavisProg gmx.com> wrote:On Thursday, February 03, 2011 10:36:29 Ary Manzana wrote:You're right, it isn't. My text editor highlights it like it is, so I just assumed... My question still stands though, why the requirement to use this.outer instead of just outer? -SteveOn 2/3/11 10:29 AM, Steven Schveighoffer wrote:It's not a keyword. It's a property of non-static inner classes. It's like length on an array. It's always there, but it's not a keyword.I have noticed that, is that a bug? I always thought it strange, since outer is a keyword, that you need to do this.outer. -SteveI don't think outer is a keyword.
Feb 03 2011