Thu, 11 Mar 2010 15:37:59 -0500, Steven Schveighoffer wrote: > On Wed, 10 Mar 2010 17:16:11 -0500, Pelle Månsson > <pelle.mans...@gmail.com> wrote: > >> On 03/10/2010 10:14 PM, Steven Schveighoffer wrote: >>> I think this is fine as long as we don't take it to the extreme. That >>> is, I don't want to see this happening: >>> >>> foo.prop1.prop2++; >>> >>> is rewritten to >>> >>> auto p1 = foo.prop1; >>> auto p2 = p1.prop2; >>> p2++; >>> p1.prop2 = p2; >>> foo.prop1 = p1; >>> >>> I think one level of lowering is enough to handle the most common >>> cases. >>> >>> Of course, if a property returns an lvalue, then it should just work. >>> >>> -Steve >> >> Why would you not want that? That's exactly what should happen! Why >> not? I'm sorry if I'm missing something obvious. > > BTW, C# doesn't do this: > > > struct C > { > private int _x; > public int x > { > get > { > return _x; > } > set > { > _x = value; > } > } > } > > struct D > { > private C _c; > public C c > { > get > { > return _c; > } > set > { > _c = value; > } > } > } > > class X > { > static void Main() > { > D d = new D(); > d.c.x += 5; > } > }
I hope that cannot be used as an argument against the feature. Scala supports chained properties merrily just like it should. Sorry for posting, I'll try to avoid that in the future.