📜  F#类型推断

📅  最后修改于: 2021-01-01 04:51:49             🧑  作者: Mango

F#类型推断

本主题涉及F#编译器如何推断值,函数,变量,参数和返回值的类型。

类型推断意味着您在编写代码时无需指定值或变量的类型。 F#编译器的功能足以推断出值的类型。省略F#类型信息并不意味着F#是动态类型语言。 F#是强静态类型的语言。这意味着编译器会在代码编译期间推断出自动类型。

它使代码更具可读性,尺寸更小,并节省了编写更多代码的时间。

参数和返回类型的推断

您无需在参数列表中指定参数类型。编译器根据上下文推断类型。如果未指定类型,则推断为通用。如果代码以这种方式不一致地使用值,则没有单个推断的类型,则编译器将报告错误。

一个函数的返回类型由在函数的最后一个表达式来确定。

F#参数和返回类型的推断示例

let add a b =      //Here, all parameters are inferred to int because of passing values during calling
 a+b               // Return type of this function is int because type of this expression is int.
printf "%d" (add 10 20)

输出:

30

F#自动归纳

如果代码未明确指定任何类型,则编译器将考虑泛型。这称为自动概括。它有助于编写通用代码而不会增加复杂性。