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 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.

Reply via email to