unit 类型 (F#)
unit 类型是一个指示缺少特定值的类型;unit 类型只有一个值,当不存在或不需要其他值时,此值充当占位符。
// The value of the unit type.
()
备注
每个 F# 表达式的计算结果都必须是一个值。 对于不会生成有意义的值的表达式,将使用 unit 类型的值。 unit 类型类似于 C# 和 C++ 等语言中的 void 类型。
unit 类型具有单个值,并且该值由 () 标记指示。
F# 编程中通常使用 unit 类型的值来占据一个位置,语言语法需要在此位置上有一个值,但实际上并不需要。 一个可能的示例是 printf 函数的返回值。 由于 printf 操作的重要操作是在函数中执行的,因此函数不必返回实际值。 因此,返回值的类型是 unit。
某些构造应使用 unit 值。 例如,位于模块顶级的 do 绑定或任何代码的计算结果应为 unit 值。 如果位于模块的顶级的 do 绑定或代码生成的结果不是未使用的 unit 值,则编译器将报告警告,如以下示例中所示。
let function1 x y = x + y
// The next line results in a compiler warning.
function1 10 20
// Changing the code to one of the following eliminates the warning.
// Use this when you do want the return value.
let result = function1 10 20
// Use this if you are only calling the function for its side effects,
// and do not want the return value.
function1 10 20 |> ignore
此警告是函数编程的特征;在其他 .NET 编程语言中不出现此警告。 在纯粹的函数编程中(函数不具有任何副作用),最终返回值只能是函数调用的结果。 因此,当忽略结果时,可能会发生编程错误。 尽管 F# 不是纯粹的函数编程语言,但只要有可能,最好遵循函数编程风格。