Es scheint, dass alle neuen Programmiersprachen oder zumindest diejenigen, die populär geworden sind, Typinferenz verwenden. Sogar Javascript hat Typen und Typinferenz durch verschiedene Implementierungen (Acscript, typescript etc). Es sieht toll aus, aber ich frage mich, ob es Kompromisse gibt oder warum Java oder die alten guten Sprachen keine Typinferenz haben
- Wenn Sie eine Variable in Go deklarieren, ohne ihren Typ anzugeben (mithilfe von var ohne Typ oder der Syntax: =), wird der Typ der Variablen aus dem Wert auf der rechten Seite abgeleitet.
- D ermöglicht das Schreiben großer Codefragmente ohne redundante Typangabe, wie dies bei dynamischen Sprachen der Fall ist. Andererseits werden durch statische Inferenz Typen und andere Codeeigenschaften abgeleitet, wodurch sowohl die statische als auch die dynamische Welt optimal genutzt werden.
- Die Typinferenzmaschine in Rust ist ziemlich schlau. Es ist mehr als nur die Art des r-Werts während einer Initialisierung zu betrachten. Es sieht auch so aus, als würde die Variable später verwendet, um auf ihren Typ zu schließen.
- Swift verwendet die Typinferenz, um den entsprechenden Typ zu ermitteln. Mit der Typinferenz kann ein Compiler den Typ eines bestimmten Ausdrucks automatisch ableiten, wenn er Ihren Code kompiliert, indem er einfach die von Ihnen angegebenen Werte untersucht.
var
und C ++ auto
) und Typinferenz (bidirektional, wie Haskell let
). Im ersteren Fall kann der Typ eines Namens nur von seinem Initialisierer abgeleitet werden - seine Verwendung muss dem Typ des Namens folgen. Im letzteren Fall kann der Typ eines Namens auch aus seiner Verwendung abgeleitet werden. Dies ist hilfreich, da Sie []
unabhängig vom Elementtyp einfach für eine leere Sequenz oder newEmptyMVar
für eine neue nullveränderliche Referenz schreiben können , unabhängig vom Referenten Art.
var
dass dies die Lesbarkeit beeinträchtigen kann.