new DIP5: Properties 2

Ary Borenszweig ary at esperanto.org.ar
Tue Jul 28 05:24:19 PDT 2009


Jarrett Billingsley escribió:
> On Mon, Jul 27, 2009 at 11:13 PM, Andrei
> Alexandrescu<SeeWebsiteForEmail at erdani.org> wrote:
>> Rainer Deyke wrote:
>>> Benji Smith wrote:
>>>> 3) The existence of "magical" identifiers complicates the language
>>>> design. Because the rules that apply to those magical identifiers is
>>>> different than the rules applying to non-magical identifiers.
>>> I don't see how that's the case.  Everywhere opGet_foo appears, it is
>>> treated exactly like every other identifier.
>>>
>>> The only thing "special" about these identifiers is that they can be
>>> generated automatically by the compiler.  When the compiler sees 'a.b',
>>> and 'b' is not a field or method of 'a', it rewrites this to
>>> 'a.opGet_b()'.
>> Oh. You stole my thunder.
>>
>> +1
> 
> While the opGet_foo and opSet_foo are okay, what are your thoughts on
> the 'property' attribute on a function?  I know you said you didn't
> really like the idea of having to name your range's empty function
> 'opGet_empty'.  The property attribute also has the nice property
> (heh) that you can call the property setters and getters either as
> properties or as functions (i.e. "r.empty" or "r.empty()").
> Basically, the behavior would be *exactly* as it is now, except you'd
> have to explicitly state with which functions it would be legal.
> 
> Or is the idea of introducing the 'property' keyword too controversial?
> 
> I mean, if it is, there are plenty of keywords in D that *only* have
> one meaning.  I'm sure one of them could be repurposed ;)

Another problem with the opGet_foo approach (which I find quite ugly to 
my eyes) is that it's less backward compatible. As Andrei said, he'll 
have to rename empty() to opGet_empty(). The compiler will also be a 
little slower because for each function it'll have to make a match to 
see if it starts with opGet or opSet. There's also the thing to worry 
about not letting "int foo" and "int opGet_foo" to coexist.

And currently D has 106 keywords. I think no one will care if it has 
107. :-P



More information about the Digitalmars-d mailing list