Andrei Alexandrescu wrote:
Kagamin wrote:
Walter Bright Wrote:

Properties. Your syntactic sugar:

int i = c.p; // int i = c.p() p = i // c.p(i)

They can't do these things:

* No control over their use by class designer: ANY member
function with one or zero parameters may be called using
'property syntax'. This is not a good thing.
Why not? Seriously, what is the semantic difference?

Your view of the problem is too technical. Functions used to denote
arbitrary "actions", while properties are designed to simulate data
rather than functions: fields with minor logic concerning accessing
them, e.g. input validation.

I so don't get this. Yes, functions are used to denote arbitrary actions. Some of these actions can set and get state. It is convenient to benefit of some syntactic aid for those cases (e.g. make their use look and feel like fields). So far so good. But as long as there is no innate validation or enforcement from the compiler that for example you setFoo(5) ensures that getFoo() will get you 5, we're only talking about syntactic convenience. This is it: syntactic convenience. Nothing else.

This got reflected in naming conventions
directing to name functions with verbs and properties and fields with
nouns.

Fine.

Properties being implemented by functions is a technical
detail, which may change: the property logic can become declarative
or come in a form of type checking and be tested by caller, or most
probably it can be replaced by invariant altogether.

I don't understand this.

All these
alternative solutions have their certain limitations or advantages,
but they effectively do the same thing as "functional" properties
without changing their semantics.

And consequently this.

That's why properties are not
functions.

This post had a negative effect on me: I now think properties are functions even more than before.

I think the only way you and Walter can understand what a property is and what it is used for is to use for some time a language that implements them. For example C#. Then you'll say "that's nice" and would want to implement it in D.

Reply via email to