Properties: problems

Benji Smith dlanguage at benjismith.net
Thu Jul 30 19:05:25 PDT 2009


John C wrote:
> Chad J wrote:
>> John C wrote:
>>> Here's a couple of annoying problems I encounter quite often with D's
>>> properties. Would having some form of property syntax fix them?
>>>
>>> 1) Array extensions:
>>>
>>>   class Person {
>>>
>>>     string name_;
>>>
>>>     string name() {
>>>       return name_;
>>>     }
>>>
>>>   }
>>>
>>>   auto person = getPerson();
>>>   auto firstAndLast = person.name.split(' ');
>>>
>>> The above line currently requires parentheses after 'name' to compile.
>>>
>>
>> This one is weird.  After defining getPerson() I was able to rewrite the
>> last line into this and make it compile:
>>
>>     auto firstAndLast = split(person.name," ");
> 
> Yes, that's D's special array syntax, where free functions can be called 
> as if they were "methods" of an array.

Yeah, this is one of those nasty cases where several different features 
(optional parentheses on functions & automatic extension method syntax 
on arrays) work ok in isolation, but where they have weird wonky 
behavior when combined. I've seen this one before.

--benji



More information about the Digitalmars-d mailing list