![]() |
1
5
类型推断是某些静态类型语言的一个特征。编译器将类型分配给缺少任何类型注释的实体。编译器实际上只是代表程序员“填充”静态类型信息。 类型推断往往在具有许多隐式强制和歧义的语言中工作得更差,因此大多数类型推断语言都是函数式语言,几乎没有强制、重载等方式。 类型推断是语言规范的一部分,例如,F#规范详细介绍了类型推断算法和规则,因为这有效地确定了“什么是合法程序”。 尽管一些(大多数?)语言支持一些有限形式的类型推断(例如C#中的“var”),但大多数人使用“类型推断”来指代绝大多数类型是推断的而不是显式的语言(例如,在F#中,除了局部变量外,函数和方法签名通常是推断出来的;与C#相反,“var”允许推断局部变量,但方法声明需要完整的类型信息)。 |
![]() |
2
2
类型推断器根据上下文确定变量的类型。它依赖于强类型来实现这一点。例如,函数式语言是非常强的静态类型,但完全依赖于类型推断。 C#和VB.Net是具有类型推理的静态类型语言的其他示例(它们提供类型推理是为了使泛型可用,并且它是LINQ中的查询所必需的,特别是为了支持投影)。 动态语言不推断类型,它是在运行时发现的。 |
![]() |
3
0
类型推断是一些静态语言中的一种折衷方法。如果可以推断类型,则可以在不指定类型的情况下声明变量 在编译时 |
![]() |
4
0
类型推断器是使用类型推断算法静态推断类型的任何东西。因此,它不仅仅是静态语言的一个特性。 您可以为动态语言或具有不安全或隐式类型转换的语言构建静态分析工具,类型推断将是其工作的主要部分。然而,对于具有不安全或动态类型系统的语言,或者对于包含隐式转换的语言,在一般情况下不能使用类型推断来证明程序的类型安全性。 因此,使用类型推断:
|
![]() |
Terio · Typescript:使用变量的值创建自定义类型 2 年前 |
![]() |
Kareem Adel · 创建函数类型(TypeScript接口) 2 年前 |
![]() |
MatÄj VondráÄek · 如何在c#方法中传递类型? 3 年前 |
![]() |
kreo · 为什么&[T]参数也接受&Vec? 7 年前 |
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 7 年前 |