12 votes

Fonctions d'extension en D

J'ai acheté "Le langage de programmation D" il y a quelque temps. C'est un bon livre, très éducatif. Cependant, j'ai du mal à essayer de compiler une fonction du langage listée dans le livre : Les fonctions d'extension.

Dans le livre, Andrei écrit que toute fonction(a, b) peut être invoquée comme : a.function(b) ; Je devrais donc pouvoir le faire :

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'
}

C'est vrai ? Est-ce que cette fonctionnalité n'est pas encore implémentée, ou est-ce que je rate quelque chose ? J'ai remarqué que l'importation de std.range ajoute des méthodes aux tableaux, il semble donc qu'elle soit implémentée à un certain niveau.

12voto

Justin W Points 2067

Je suppose que vous voulez parler des "pseudo-membres" dont il est question dans la section 5.9.1. Actuellement, cette fonctionnalité n'est implémentée que pour les tableaux, bien que ce soit une fonctionnalité prévue. Dans la communauté D, on y fait également référence sous le nom de "Uniform Function Call Syntax".

Voici le rapport de bogue qui sera fermé lorsque cette fonctionnalité sera mise en œuvre : Numéro 3382

2voto

RedX Points 7449

Je voulais juste préciser que la syntaxe uniforme d'appel de fonction a été mise en œuvre.

Il y a un bon article du Dr Dobbs à ce sujet : Syntaxe uniforme d'appel de fonction sur Dr. Dobbs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X