OK - cela peut être une question très stupide, mais cela me dérange bien.
y a-t-il une langue où p> donnerait et aurait-il un sens? Bien sûr, en tant que développeur, vous devez prendre soin de vous aider, car les instances qui ressemblent à un pointeur animalier pourraient effectivement appeler le code APE, car à l'exécution, une instance singe est signalée. P> P> "faire des singe" code> em>? (veuillez porter avec moi en utilisant la syntaxe C ++)
Pour clarifier, je veux "une fonction qui accepte un argument et agit en fonction du type de l'argument". P>
5 Réponses :
Potentiellement, mais ce ne serait pas C ++ puisque la fonction de surcharge des fonctions en C ++ est effectuée à l'heure de la compilation, pas d'exécution, comme ce serait requis ici. Il nécessiterait une langue dynamique qui permet un allusion et une surcharge de type. P>
Eh bien, je sais que c ++ ne prend pas en charge la fonctionnalité que je suis "Sorteta" à la recherche de. La pensée vient de venir à moi lors de la codage en C ++. Est-ce ce qui fait la différence entre les langues dynamiques / statiques?
Oui. Les langues dynamiques font leurs chèques de type / attributs à l'exécution au lieu de compilation. Il ralentit un peu leur opération, mais permet une plus grande flexibilité.
Non Non Non Non - Vous pouvez avoir une langue très dynamique (dire python) qui ne supporte pas cela hors de la boîte ... Vous devez utiliser un addon spécial "multimethods".
C ++ pourrait i> Supporte la recherche sur les paramètres de la fonction. Cela ne fait pas partie des raisons de performance.
@Steven: Python ne supporte ni l'indication de type ni surcharge, donc je ne suis pas surpris.
Il y a une incohérence ici qui est déroutante. Voulez-vous une fonction qui accepte un argument et agit en fonction du type de l'argument? Ce ne serait pas vraiment un polymorphisme car les fonctions sont sur leur solitaire, elles ne sont pas des méthodes appartenant à une hiérarchie de classe ou d'interface. En d'autres termes, son genre de mélange de paradigmes de OO avec des paradigmes procéduraux. p>
Si c'est le type que vous souhaitez paramétrer et non la variable, vous utiliseriez quelque chose comme des génériques Java. Avec des génériques, vous pouvez informer une méthode que le type du paramètre à venir sera également variable. La méthode agit sur le type de variable de manière générique. p>
Nice description de la fonctionnalité que je recherche - J'étais tellement audacieuse de la mettre dans une édition de mon problème. Vous avez raison - le polymorphisme est probablement un mauvais terme, mais aucun autre n'est tombé à travers mon esprit.
Oui, il y en a! C'est ce qu'on appelle Dispatch multiple . L'article Wikipedia est très bon. Malheureusement, il semble seulement être soutenu par des extensions linguistiques pour les langues les plus populaires, mais il y a quelques langues (principalement éternelles) qui le soutiennent de manière native. P>
Lisp commun ... pourquoi c'est une surprise (non!);) Merci de clarification à terme et du lien Wikipedia!
Il est presque triste de devoir le classer comme étant ésotérique :-p
Ouvrir les multi-méthodes pour C ++ , par Peter Pirkelbauer, Yuriy Solodkyy et Bjarne Stroustrup. P>
Ce document aborde une extension linguistique pour intégrer plusieurs méthodes en C ++ avec des détails de mise en œuvre très intéressants, tels que la gestion des bibliothèques chargées de manière dynamique et la disposition réelle de l'envoi correctement. Notez qu'il ne fait pas encore partie de la norme C ++, et probablement pas une partie de tout compilateur majeur. P>
Jetez un coup d'œil au modèle de visiteur p>
Pour les langues qui ne prennent pas en charge de multiples schémas de visiteur de l'envoi et / ou de la correspondance des motifs sont probablement la meilleure solution.