Il semble que tous les nouveaux langages de programmation ou du moins ceux qui sont devenus populaires utilisent l'inférence de type. Même Javascript a obtenu des types et des inférences de types via diverses implémentations (Acscript, typescript, etc.). Cela me semble bien, mais je me demande s'il y a des compromis ou pourquoi disons que Java ou les anciens bons langages n'ont pas d'inférence de type
- Lorsque vous déclarez une variable dans Go sans spécifier son type (en utilisant var sans type ou la syntaxe: =), le type de la variable est déduit de la valeur sur le côté droit.
- D permet d'écrire de gros fragments de code sans spécifier de types redondants, comme le font les langages dynamiques. D'autre part, l'inférence statique déduit des types et d'autres propriétés de code, donnant le meilleur des mondes statique et dynamique.
- Le moteur d'inférence de type dans Rust est assez intelligent. Il fait plus que regarder le type de la valeur r lors d'une initialisation. Il examine également comment la variable est utilisée par la suite pour déduire son type.
- Swift utilise l'inférence de type pour déterminer le type approprié. L'inférence de type permet à un compilateur de déduire automatiquement le type d'une expression particulière lorsqu'il compile votre code, simplement en examinant les valeurs que vous fournissez.
var
et C ++ auto
) et l' inférence de type (bidirectionnelle, comme Haskell let
). Dans le premier cas, le type d'un nom peut être déduit uniquement de son initialiseur - ses utilisations doivent suivre le type du nom. Dans ce dernier cas, le type d'un nom peut également être déduit de ses utilisations, ce qui est utile en ce que vous pouvez écrire simplement []
pour une séquence vide, quel que soit le type d'élément, ou newEmptyMVar
pour une nouvelle référence mutable nulle, quel que soit le référent type.
var
car cela peut parfois nuire à la lisibilité.