F# 签名

2024 年 8 月 29 日 | 阅读 2 分钟

在 F# 中,签名文件包含有关公共签名的信息。 签名可以是一组程序元素,例如类型、命名空间和模块。 它可用于指定这些程序元素的可访问性。

对于 F# 中的每个代码,您可以拥有签名文件。 该文件的名称与代码文件相同,但扩展名为 .fsi 而不是 .fs

签名有一些规则

  1. 实现文件中的类型缩写不能与签名文件中没有缩写的类型匹配。
  2. 记录和判别联合必须公开其所有或没有字段和构造函数。 类可以在签名中显示其部分、全部或没有字段和方法。
  3. 接口类型必须显示其所有方法和接口。
  4. 签名中的可访问性修饰符(public、internal 和 private)以及 inline 和 mutable 修饰符必须与实现中的修饰符匹配。
  5. 泛型类型参数的数量(隐式推断或显式声明)必须匹配,并且泛型类型参数中的类型和类型约束必须匹配。
  6. 如果使用 Literal 属性,则它必须同时出现在签名和实现中,并且必须为两者使用相同的字面值。
  7. 签名和实现的参数模式(也称为元数)必须一致。

F# 签名文件示例

这是名为 signature.fs 的代码文件

这是名为 signature.fsi 的签名文件

正如您所看到的,此文件既不实现代码,也没有业务逻辑。 它只是以抽象形式提供有关代码文件的信息。