Кажется, что все новые языки программирования или, по крайней мере, те, которые стали популярными, используют вывод типов. Даже Javascript получил типы и вывод типов через различные реализации (Acscript, typcript и т. Д.). Это выглядит великолепно для меня, но мне интересно, есть ли какие-то компромиссы или почему, скажем, Java или старые добрые языки не имеют вывода типа
- При объявлении переменной в Go без указания ее типа (с использованием var без типа или синтаксиса: =) тип переменной выводится из значения в правой части.
- D позволяет писать большие фрагменты кода без избыточного указания типов, как это делают динамические языки. С другой стороны, статический вывод выводит типы и другие свойства кода, предоставляя лучшее из статического и динамического миров.
- Механизм вывода типов в Rust довольно умный. Он делает больше, чем просто смотрит на тип значения r во время инициализации. Также выглядит, как переменная впоследствии используется для определения ее типа.
- Swift использует вывод типа для разработки подходящего типа. Вывод типа позволяет компилятору автоматически определять тип определенного выражения при компиляции вашего кода, просто проверяя предоставленные вами значения.
var
и C ++ auto
) и выводом типа (двунаправленный, как Haskell let
). В первом случае тип имени может быть выведен только из его инициализатора - его использование должно соответствовать типу имени. В последнем случае тип имени также может быть выведен из его использования - что полезно в том смысле, что вы можете написать просто []
для пустой последовательности, независимо от типа элемента, или newEmptyMVar
для новой пустой переменной, независимо от референта. тип.
var
потому что это иногда может ухудшить читабельность