J'ai travaillé avec de nombreux langages qui ne génèrent pas de signature de méthode basée sur le type de retour. J'ai également travaillé avec un (peut-être certains?) Qui le font. Ceux qui ne m'ont pas posé de problèmes dans le passé (comme ici ). Pourquoi les langages de programmation génèrent-ils des signatures de méthode sans égard au type de retour?
Mise à jour: je me réfère spécifiquement aux langues compilées de manière statique
programming-languages
Charles Lambert
la source
la source
Réponses:
Il ne conviendrait pas bien à la conversion de types et aux hiérarchies de types. Si vous avez deux versions d'une méthode, dont l'une renvoie le type A et l'autre qui renvoie le type B, vous rencontrez des problèmes lorsque:
Vous pouvez contourner ce problème avec les transtypages, mais cela nécessiterait autant de saisie que le changement de nom d'une des fonctions. Vous pouvez également enregistrer une erreur de compilation lorsque l'appel est ambigu, auquel cas l'utilisateur doit dépenser des efforts similaires.
la source
Parce que vous pouvez appeler une méthode et ne pas attribuer son résultat.
la source
Règle générale: les langages fortement typés lient généralement la signature de la méthode à un type de retour. Les langues faiblement typées ne le font pas.
Je ne connais pas C #, mais je suppose que le problème pourrait être dû à la façon dont C # gère les génériques. Il pourrait s'agir de créer une méthode totalement différente de la méthode générique, auquel cas il s'agit en réalité de deux méthodes différentes.
la source