Я купил "Язык программирования 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 добавляет методы к массивам, поэтому он, похоже, реализован на каком-то уровне.