它只存在于静态类型语言中吗?当语言不是强类型时(即Java是否有此项功能)?此外,它属于哪个阶段 - 假设它是编译型语言,那么它属于编译阶段吗?
一般来说,当类型模糊不清时的规则是由语言规范决定还是由实现决定?
它只存在于静态类型语言中吗?当语言不是强类型时(即Java是否有此项功能)?此外,它属于哪个阶段 - 假设它是编译型语言,那么它属于编译阶段吗?
一般来说,当类型模糊不清时的规则是由语言规范决定还是由实现决定?
类型推断器可以从上下文中确定变量的类型。它依赖于强类型来实现。例如,函数式语言非常强大,静态类型但完全依赖于类型推断。
C#和VB.Net是其他具有类型推断的静态类型语言的示例(它们提供类型推断以使泛型可用,并且在LINQ中需要支持投影,因此必须使用它)。
动态语言不会推断类型,它是在运行时发现的。
类型推断是一些静态语言中的妥协。您可以声明变量而不指定类型,前提是该类型可以在编译时被推断出来。它不提供潜在类型的灵活性,但您可以获得类型安全性,并且无需编写太多代码。
请参见维基百科文章。
类型推断器是通过使用类型推断算法静态地推导类型的任何东西。因此,它不仅是静态语言的一个特性。
您可以为动态语言或具有不安全或隐式类型转换的语言构建静态分析工具,并且类型推断将成为其工作的重要部分。但是,对于具有不安全或动态类型系统或包含隐式转换的语言,通常不能使用类型推断来证明程序在一般情况下的类型安全性。
因此,类型推断用于: