Uniform Function Call Syntax(UFCS) and @property

Jonathan M Davis jmdavisProg at gmx.com
Fri Mar 4 08:54:34 PST 2011


On Friday 04 March 2011 04:59:14 David Nadlinger wrote:
> On 3/3/11 10:27 PM, Jonathan M Davis wrote:
> > I'd strongly argue that global/module properties make no sense. What are
> > they a property of? The module?
> 
> You could as well say: I'd strongly argue that global/module variables
> make no sense. What are they a variable of? The module?
> 
> In my opinion, allowing global variables but not global properties just
> creates yet another unneeded special case.

I see no special case or inconsistency. The original idea behind a property (as 
I understand it) is to abstract member variables so that you can easily switch 
between having a public member variable and having a public member function 
without having to change code. The term property implies that it is a property 
or attribute of whatever it's on. A global variable or a local variable or any 
kind of variable not on a class or struct is free-floating and not a property or 
attribute of anything. How many languages which have properties have them on 
_anything_ other than objects?

I was surprised that anyone would suggest that @property could be used on 
anything other than a class or struct's member function. I strongly suspect that 
the main reason that anyone is thinking that way is because properties in D grew 
out of being able to call pretty much any old function without parens as long as 
it had no parameters instead of based on the concept of properties to begin with 
as it likely would have been in other languages.

- Jonathan M Davis


More information about the Digitalmars-d mailing list