似乎所有新的编程语言,或者至少是流行的编程语言都使用类型推断。即使是Javascript,也可以通过各种实现(Acscript,Typescript等)获得类型和类型推断。对我来说看起来很棒,但我想知道是否需要权衡取舍,或者为什么要说Java或旧的好语言没有类型推断
- 在Go中声明变量而不指定其类型时(使用不带类型的var或:=语法)时,将从右侧的值推断出变量的类型。
- D允许编写大型代码片段,而无需像动态语言那样重复指定类型。另一方面,静态推断可推导类型和其他代码属性,从而充分利用静态和动态环境。
- Rust中的类型推断引擎非常聪明。它所做的不只是在初始化过程中查看r值的类型。它还看起来如何在以后使用变量来推断其类型。
- Swift使用类型推断来得出适当的类型。通过类型推断,编译器只需检查您提供的值,即可在编译代码时自动推断出特定表达式的类型。
var
和C ++的单向auto
)和类型推断(如Haskell的双向)之间进行区分let
。在前一种情况下,名称的类型只能从其初始化程序中推断出-名称的使用必须遵循名称的类型。在后一种情况下,名称的类型也可以从其用法中推断出来–这很有用,因为您可以简单地[]
为一个空序列编写代码,而不必考虑元素类型,也newEmptyMVar
可以为新的null可变引用编写,而与引用对象无关类型。
var
因为它有时会损害可读性。