2013/1/25 Jonathan M Davis <[email protected]> > And actually, something far more important than any of those reasons is the > issue of setters. We've focused most of this discussion on optional parens > and > the situation with getter properties, but setter properties and their > issues > are also important. Would you want code like this to compile? > > range.popFront = 17; > container.linearRemove = range; > path.baseName = ".xyz"; > str.icmp = "hello"; > enforce(a == b) = "msg"; > arr.sameHead = arr2; > > With @property, we can restrict the functions which can be used with the > setter syntax to functions where that makes sense. Without it, all kinds of > ridiculous code like the code above would be allowed. > > Allowing optional parens is one thing, but conflating that with properties > is > something else entirely. Property functions are not just functions which > are > called without parens, and we shouldn't act like they are.
I have explained an additional rule in #1a. > 1a. Optional parentheses for normal functions is just allowed for the getter usage. > > int foo(); > foo(); // ok > foo; // ok, from #1 > > void bar(int); > bar(1); // ok > bar = 1; // disallowed, from #1a If based on that, such situations which you are worried will not occur. Kenji Hara
