On Sunday, July 15, 2012 19:50:18 Timon Gehr wrote: > On 07/15/2012 05:40 AM, Jonathan M Davis wrote: > > On Sunday, July 15, 2012 05:30:55 Jay Norwood wrote: > >> I see from this other discussions that it looks like 2.059 ( or > >> maybe 2.060) does support something like 3.cm(). Not sure from > >> the discussion if it would also accept 3.cm as in the xtext/xtend > >> example. > >> > >> http://forum.dlang.org/thread/smoniukqfxerutqrj...@forum.dlang.org > > > > UFCS (universal function call syntax) was added in 2.059. If cm is a > > function, then 3.cm() will work. If it's a property function, then 3.cm > > will work. If you don't compile with -property, then 3.cm will still work > > with cm being a non-property function, but -property will become the > > normal behavior eventually, so you shouldn't expect that 3.cm will work > > long term unless cm is a property function. > > I expect it to stay. > > Another reason why @property-'enforcement' is flawed: > > @property auto cm(int arg){ .. } > > cm=2; // ok > 2.cm; // ok > > The two code snippets would in fact be equivalent.
@property isn't perfect, and I admit that the fact that both cm = 2 and 2.cm works here is undesirable, given what's trying to be done here, but it makes sense given that it's abstracting a variable. It's just undesirable that you can't make it so that it functions only as a getter. But the overall situation is still a whale of a lot better than the laxity of letting just any function be called with or without parens depending no what each particular programmer feels like doing with it. If it's a property, it should be treated as such, and if it isn't, it shouldn't. > What is enforced here? Why would it matter if anything is 'enforced'? If you marked it as a property, then it's supposed to be abstracting a variable and should be treated as one, just like if it's a normal function, it should be invoked as a function, just like ++ shouldn't suddenly do --, and / shouldn't *. I don't want to get into this argument again. The current plan is (and has been for some time) that -property will become the normal behavior, and there have been no indications that that's going to change. I know that you don't like it, but some of us think that it's a major improvement, even if the result isn't perfect. The only way that it's going to change is if Walter changes his mind. - Jonathan M Davis