Uniform Function Call Syntax(UFCS) and @property
Jonathan M Davis
jmdavisProg at gmx.com
Thu Mar 3 13:27:37 PST 2011
On Thursday, March 03, 2011 12:32:44 kenji hara wrote:
> It seems to me that you think only combination of member-variable like
> property and UFCS.
> My suggestion is consider global-variable like property as well.
> example:
> @property int global_var(){...} // getter, int n = global_var;
> @property void global_var(int n){...} // setter, global_var = 10;
>
> I think that global variable like setter function and member-variable
> like getter function occur ambiguity.
> Getter and Setter are the opposite meaning.
I'd strongly argue that global/module properties make no sense. What are they a
property of? The module? The whole idea with properties in the first place was to
be an abstraction of member variables. And since you really shouldn't be using
mutable global/module variables anyway, the benefit of such a "property" is
already limited. And if they cause ambiguity (as they obviously do), then that's
one more reason to disallow them.
Conceptually, I don't think that properties make any sense unless they're
properties of a type (be it a user-defined type, or an array, or some other type
called with UFCS). A property is a property _of_ something, not just a random
variable. And from a practical point of view, allowing properties which aren't
on a type causes ambiguity, so they make that much _less_ sense.
If you disallow global/module "properties," then you don't need any special
syntax to deal with the problems that they might cause. They should just work.
I see no reason to allow global/module "properties" when they don't make sense
conceptually and they cause ambiguities if you try and allow them.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list