DIP4: Properties

Leandro Lucarella llucax at gmail.com
Sun Jul 26 17:10:42 PDT 2009


Daniel Keep, el 27 de julio a las 02:29 me escribiste:
> > Syntax don't have to be changed, unless templates are not allowed
> > (syntactically) in interfaces (I'm too lazy to check right now :).
> > 
> > And template syntax don't have to change either. This is already valid
> > AFAIK syntax AFAIK. What it has to be changed, is the semantics, because
> > int opGet(foo)(); should be interpreted as a read property instead of
> > a templated function.
> 
> Ok, I should have said "semantics" instead of syntax.
> 
> The thing is you're proposing that template syntax doesn't *actually*
> mean a template if the identifier is "opGet".  opGet effectively becomes
> a keyword; so you may as well just bite the bullet and add "property" as
> a keyword.

Why it is a keyword? I know is a little controversial to change the
meaning of template syntax based on the function name (and I think that's
a good point for dismissing my proposal) but I really don't get why do you
think that it's like adding a keyword. You don't have to make opGet
a reserved word, you could use a variable named opGet if you want, the
same you can use opCall or the other "magical" method names.

I'm not really sure what is worse from a philosophical POV, if changing
the template syntax meaning for opGet (opGet(prop)) or extract semantic
information from a method name (opGet_prop). I think that the former looks
a little cleaner at least =)

> >>> I used an example without trivial properties because... well, you just use
> >>> member variables for that. That's why I don't see real value in adding
> >>> default properties getter/setters.
> >> interface I
> >> {
> >>     int opGet_value();
> >> }
> >>
> >> You cannot use fields in an interface.
> > 
> > Yes, and...?
> 
> You have an interface.  One of the things it needs to do is provide
> access to a field.  You can't just declare a field; you have to have an
> accessor.  In most situations, the implementation will simply want to
> expose some internal field.

So, you think there should be an easy way to define default
getter/setters? If that's what you're saying, I didn't saw how that is
handled in your proposal, I'm sorry, I'll take a look again.

-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
Un camión lleno de amigos, míos.
Cada uno dando vueltas, en su cabeza.
Mientras yo, sufro la picadura de mi propia abeja.



More information about the Digitalmars-d mailing list