Properties: problems
Chad J
chadjoan at __spam.is.bad__gmail.com
Fri Jul 31 00:37:18 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.
>
>>
>> Note that you need qoutes, not just ' '.
>
> My mistake.
>
>> But even
>>
>> auto firstAndLast = person.name.split(" ");
>>
>> does not compile.
>> main2.d(36): Error: function expected before (), not
>> split(person.name()) of type immutable(char)[][]
>>
>> This is probably a compiler bug.
>
> This is my point. The compiler can't tell that "name" is a property, so
> it expects parentheses "name()" to work. That's the problem.
>
I'm saying this actually should work in current D2.
>>
>> I don't think property syntax is truly necessary for this example. You
>> are fortunate enough to be using strings, which are passed by reference.
>
> Sorry, I don't see how this statement is relevant at all.
It's the pointed answer to your question:
>>> Here's a couple of annoying problems I encounter quite often with D's
>>> properties. Would having some form of property syntax fix them?
They should work already, so property syntax can't possibly fix them.
At least not on a conceptual level. On a practical level, it is quite
possible that property syntax would improve the situation, if only
because the information is provided to the compiler in a much more
direct manner.
More information about the Digitalmars-d
mailing list