Je suis allé voir tes liens,
(...)
Et quand on parle de fonctions comme citoyens de premier classe, on entend aussi par là qu'elles peuvent être utilisées dans un contexte polymorphe comme n'importe quel autre terme sans syntaxe particulière.
Bah t'as pas dû tout lire alors.
Voici comme définir une variable qui est une fonction:
auto ajouter = [](int x, int y) { return x+y; };
auto uneautre = &MaClasse:unemethode; Et comment on capture une variable en passant une fonction en paramètre:
int total;
macollection.iterer([&total](int n) { total += n; }); Tu peux trouver la syntaxe difficile si tu veux, mais perso je trouve que séparer les paramètres capturés (crochets) des paramètres d'appel (parenthèses) clarifie beaucoup de choses (notamment en précisant si la capture est pas référence ou par copie).
Mais je peux continuer le troll aussi : si tu veux essayer de me convaincre que la POO (oui ça ne touche pas que le C++ ;-) n'est pas une totale aberration logique et intellectuelle, il va falloir te lever de bonne heure
Je n'essayerai pas de te convaincre. Mais en fait selon le problème que tu cherches à résoudre ce n'est pas toujours le même modèle de programmation (objet, fonctionnel, procédural) le plus efficace et avoir plusieurs outils ne nuit pas.
D'ailleurs un des avantages de C++ est que tu peux faire un peu tout avec. Je ne dis pas qu'il faut tout faire avec juste que tu n'es pas obligé de faire du fonctionnel (contrairement à lisp/scheme qui te l'impose), que tu n'es pas obligé de faire de l'objet avec (contrairement à java qui te l'impose au moins dans la forme et les bibliothèques/frameworks existants), etc.
[^] # Re: Jai: Language for game programmming
Posté par DerekSagan . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 3.
Bah t'as pas dû tout lire alors.
Voici comme définir une variable qui est une fonction:
Et comment on capture une variable en passant une fonction en paramètre:auto ajouter = [](int x, int y) { return x+y; };
auto uneautre = &MaClasse:unemethode;
Tu peux trouver la syntaxe difficile si tu veux, mais perso je trouve que séparer les paramètres capturés (crochets) des paramètres d'appel (parenthèses) clarifie beaucoup de choses (notamment en précisant si la capture est pas référence ou par copie).int total;
macollection.iterer([&total](int n) { total += n; });
Je n'essayerai pas de te convaincre. Mais en fait selon le problème que tu cherches à résoudre ce n'est pas toujours le même modèle de programmation (objet, fonctionnel, procédural) le plus efficace et avoir plusieurs outils ne nuit pas.
D'ailleurs un des avantages de C++ est que tu peux faire un peu tout avec. Je ne dis pas qu'il faut tout faire avec juste que tu n'es pas obligé de faire du fonctionnel (contrairement à lisp/scheme qui te l'impose), que tu n'es pas obligé de faire de l'objet avec (contrairement à java qui te l'impose au moins dans la forme et les bibliothèques/frameworks existants), etc.