F#签名

【F#签名】在F#中, 签名文件包含有关公共签名的信息。签名可以是一组程序元素, 例如类型, 名称空间和模块。它可以用来指定这些程序元素的可访问性。
对于F#中的每个代码, 你都可以具有签名文件。该文件与代码文件同名, 但扩展名为.fsi而不是.fs
有一些签名规则:

  1. 实现文件中的类型缩写不能与签名文件中没有缩写的类型匹配。
  2. 记录和有区别的联合必须公开其全部字段或构造函数, 也可以不公开。类可以在签名中显示某些, 全部或不显示其任何字段和方法。
  3. 接口类型必须显示其所有方法和接口。
  4. 可访问性的修饰符(公共, 内部和私有)以及签名中的内联和可变修饰符必须与实现中的修饰符匹配。
  5. 泛型类型参数(隐式推断或显式声明)的数量必须匹配, 并且泛型类型参数中的类型和类型约束必须匹配。
  6. 如果使用了Literal属性, 则它必须同时出现在签名和实现中, 并且两者必须使用相同的文字值。
  7. 签名和实现的参数模式(也称为Arity)必须一致。
F#签名文件示例这是名为signature.fs的代码文件
namespace FSharpProgramsmodule Arithmetic =let add x y = x+ylet sub x y = x-y

这是名为signature.fsi的签名文件
namespace FSharpProgramsmodule Arithmetic =val add : int * int -> intval sub : int * int -> int

如你所见, 该文件既没有实现代码, 也没有业务逻辑。它只是以抽象形式提供有关代码文件的信息。

    推荐阅读