28Fermer30
SallyLe 18/07/2012 à 22:51
Uther (./13) :
Quel peut donc être l’intérêt de masquer le type d'une variable?
Ça a un intérêt pour le polymorphisme, mais l’intérêt principal de l’inférence de types n’est précisément pas de masquer les types, au contraire, c’est de les afficher. Tu écris un truc et la machine infère le type et te le donne. C’est comme ça que fonctionne ocaml par exemple.
Évidemment le but n’est pas que le lecteur humain doive deviner tout seul les types des fonctions, ça n’aurait aucun intérêt (et si c’est pour les écrire en commentaire... tripaf)
Uther (./20) :
Dans ce cas la d'accord, mais plutôt que faire de l'inférence du coté de la déclaration on pourrait faire du coté du new :
SimplePasswordHasher *simplePasswordHasher = new();
Euuuuuuh, une expression dont la sémantique dépend du contexte dans lequel elle apparaît, ça te paraît pas un peu casse-gueule ? cheeky
Tu veux pouvoir écrire un truc du genre : fonction_qui_prend_un_paramètre_de_type_t(new())
et que new() soit automatiquement transformé en new t() dans ce cas aussi, ou pas ?
si oui, il me semble que c’est bien une forme d’inférence à l’envers, mais bonjour la lisibilité du code cheeky
si non, en fait ce que tu appelles inférence c’est juste une abréviation ad hoc spécifique au cas particulier de l’initialisation d’une variable, c’est plutôt ça je suppose ?
"t var = new(x, y, z);" abrège "t var = new t(x, y, z);" mais dans toute autre circonstance new() est interdit ?

je suis pas trop fan cheeky