Подтвердить что ты не робот

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

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

В книге Андрей пишет, что любая функция (a, b) может быть вызвана, например: a.функция (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 добавляет методы в массивы, поэтому он кажется реализованным на некотором уровне.

4b9b3361

Ответ 2

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

Здесь отчет об ошибке, который будет закрыт при реализации этой функции: Проблема 3382