Sembra che tutti i nuovi linguaggi di programmazione o almeno quelli che sono diventati popolari usino l'inferenza del tipo. Anche Javascript ha ottenuto tipi e inferenze di tipo attraverso varie implementazioni (Acscript, dattiloscritto ecc.). Mi sembra fantastico, ma mi chiedo se ci siano dei compromessi o perché diciamo che Java o le vecchie buone lingue non hanno inferenza di tipo
- Quando si dichiara una variabile in Go senza specificarne il tipo (usando var senza un tipo o la sintassi: =), il tipo della variabile viene dedotto dal valore sul lato destro.
- D consente di scrivere frammenti di codice di grandi dimensioni senza specificare ridondanti tipi, come fanno i linguaggi dinamici. D'altra parte, l'inferenza statica deduce tipi e altre proprietà del codice, dando il meglio sia del mondo statico che di quello dinamico.
- Il motore di inferenza del tipo in Rust è piuttosto intelligente. Fa di più che guardare il tipo di valore r durante un'inizializzazione. Guarda anche come la variabile viene utilizzata in seguito per inferire il suo tipo.
- Swift utilizza l'inferenza di tipo per elaborare il tipo appropriato. Inferenza del tipo consente a un compilatore di dedurre automaticamente il tipo di un'espressione particolare quando compila il codice, semplicemente esaminando i valori forniti.
var
e C ++ auto
) e l' inferenza del tipo (bidirezionale, come Haskell let
). Nel primo caso, il tipo di un nome può essere dedotto solo dal suo inizializzatore: i suoi usi devono seguire il tipo di nome. In quest'ultimo caso, il tipo di un nome può essere dedotto anche dai suoi usi, il che è utile in quanto è possibile scrivere semplicemente []
per una sequenza vuota, indipendentemente dal tipo di elemento o newEmptyMVar
per un nuovo riferimento null mutable, indipendentemente dal referente genere.
var
perché a volte può danneggiare la leggibilità.