Walter Bright wrote: > Having optional parentheses does lead to unresolvable ambiguities. How > much of a problem that really is is debatable, but let's assume it > should be resolved. To resolve it, a property must be distinguishable > from a regular function. > > One way is to simply add a "property" attribute keyword: > > property bool empty() { ... } > property void empty(bool b) { ... } > > The problem is that: > > 1. there are a lot of keywords already > 2. keywords are global things > > The alternative is to have a unique syntax for properties. Ideally, the > syntax should be intuitive and mimic its use. After much fiddling, and > based on n.g. suggestions, Andrei and I penciled in: > > bool empty { ... } > void empty=(bool b) { ... } > > The only problem is when a declaration but not definition is desired: > > bool empty; > > but oops! That defines a field. So we came up with essentially a hack: > > bool empty{} > > i.e. the {} means the getter is declared, but defined elsewhere. > > What do you think?
It solvs the ambiguities so it would work, might be nicer syntaxes out their but it solvs the main problem.