Функции расширения в D - PullRequest
       56

Функции расширения в D

12 голосов
/ 15 октября 2011

Я купил "Язык программирования D" некоторое время назад. Отличная книга, очень познавательная. Однако у меня возникают проблемы при попытке компилировать языковые функции, перечисленные в книге: Функции расширения.

В книге Андрей пишет, что любая функция (a, b) может быть вызвана так: a.function (b); Так что я должен быть в состоянии сделать это:

struct Person {
    string name;
}

void foo(Person person, string name) {
    person.name = name;
}

void main() {
    auto bob = Person();
    bob.foo("Bob Dole");  // ERROR: Person does not have method 'foo'
}

Правильно? Эта функция еще не реализована, или я что-то упустил? Я заметил, что импорт std.range добавляет методы к массивам, поэтому он, похоже, реализован на каком-то уровне.

Ответы [ 2 ]

12 голосов
/ 15 октября 2011

Я так понимаю, вы имеете в виду "Члены Psuedo", о которых говорилось в разделе 5.9.1.В настоящее время эта функция реализована только для массивов, хотя это запланированная функция.В сообществе D вы также увидите его как «Унифицированный синтаксис вызова функций».

Вот отчет об ошибке, который будет закрыт, когда эта функция будет реализована: Проблема 3382

2 голосов
/ 04 апреля 2012

Просто хотел сказать, что реализован унифицированный синтаксис вызова функций.

Есть хорошая статья доктора Доббса об этом: Унифицированный синтаксис вызова функций для доктора Доббса

...