📜  F#签名

📅  最后修改于: 2021-01-01 14:48:32             🧑  作者: Mango

F#签名

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

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

有一些签名规则:

  • 实现文件中的类型缩写不能与签名文件中没有缩写的类型匹配。
  • 记录和有区别的联合必须公开其全部字段或构造函数,也可以不公开。类可以在签名中显示某些,全部或不显示其任何字段和方法。
  • 接口类型必须显示其所有方法和接口。
  • 可访问性的修饰符(公共,内部和私有)以及签名中的内联和可变修饰符必须与实现中的修饰符匹配。
  • 泛型类型参数(隐式推断或显式声明)的数量必须匹配,并且泛型类型参数中的类型和类型约束必须匹配。
  • 如果使用了字面量属性,则它必须同时出现在签名和实现中,并且两者必须使用相同的字面量值。
  • 签名和实现的参数模式(也称为Arity)必须一致。

F#签名文件示例

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

namespace FSharpPrograms
module Arithmetic =
    let add x y = x+y
    let sub x y = x-y

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

namespace FSharpPrograms
  module Arithmetic =
    val add : int * int -> int
    val sub : int * int -> int

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