Revised RFC on range design for D2

Ary Borenszweig ary at esperanto.org.ar
Thu Oct 2 08:32:40 PDT 2008


Andrei Alexandrescu wrote:
> Bruno Medeiros wrote:
>> Bill Baxter wrote:
>>>
>>> ---
>>> Somewhat unrelated, but there still exists the annoyance in D that if
>>> you have to functions with the same name and you want to take the
>>> address of one of them, you can't.  Furthermore I can't think of a
>>> reasonable syntax to do that easily.  For that reason,  I really think
>>> the best getter and setter functionality in D would be something where
>>> you have distinctly named *functions* getProp and setProp for when you
>>> want/need functions mirroring samely-named *properties* for which only
>>> property syntax would work.
>>>
>>
>> Hum, that reminds me of an idea I once had for properties: not using a 
>> keyword, but only convention, just as the op* methods for operator 
>> overload. Basicly one writes a property with getter and setter 
>> functions, like Java:
>>
>> class Foo {
>>   SomeBar getSomeBar();
>>   void setSomeBar(SomeBar someBar);
>> }
>>
>> one can then access those functions normally, like Java, but one would 
>> then also be able to use a property with the same name of the 
>> getter/setter methods, but without 'get' or 'set', and with the 
>> capitalization of the first letter fixed, like this:
>>
>>   Foo foo = ...;
>>   SomeBar someBar = foo.someBar;
>>   //same as: SomeBar someBar = foo.getSomeBar();
>>
>>   foo.someBar = new SomeBar();
>>   //same as: foo.setBar(new SomeBar());
>>
>> This makes it easy to use Java-style code (for instance when porting 
>> Java code, or using libs like DWT, etc.).
>> What I don't like here, is that this solution involves working with 
>> the capitalization/CamelCase of the property, which doesn't sound 
>> right. And what about properties that start with a capital letter?... :(
> 
> What's going on now is pretty much that except that there's no more 
> symbol changing - it's just someBar() and someBar(SomeBar).

Pretty much, but not exactly the same, because in this way you can't 
distinguish a property from a normal method call. The idea is to be able 
to distinguish two different concepts: properties and "procedures".

> 
> Andrei
> 


More information about the Digitalmars-d-announce mailing list