F# 语言参考
本节是 F# 语言(一种面向 .NET 平台的多范例编程语言)的参考。 F# 语言支持函数编程模型、面向对象的编程模型以及命令性编程模型。
F# 标记
下表显示了一些参考主题,这些主题以表格的形式描述了 F# 中用作标记的关键字、符号和文本。
标题 |
说明 |
---|---|
包含指向有关所有 F# 语言关键字的信息的链接。 |
|
包含一个表,其中列出了 F# 语言中使用的符号和运算符。 |
|
描述 F# 中文本值的语法以及如何指定 F# 文本的类型信息。 |
F# 语言概念
下表显示了描述语言概念的可用参考主题。
标题 |
说明 |
---|---|
函数是任何编程语言中程序执行的基本单元。 与其他语言一样,F# 函数具有一个名称,可以具有形参并采用实参,还具有一个主体。 F# 还支持函数编程构造,例如,将函数视为值处理、在表达式中使用未命名的函数、将函数组合成新的函数、扩充函数,以及通过函数参数的部分应用来隐式定义函数。 |
|
介绍 F# 中使用的类型以及如何命名和描述 F# 类型。 |
|
描述 F# 编译器如何推断值、变量、参数和返回值的类型。 |
|
描述 F# 中的泛型构造。 |
|
描述继承,在面向对象的编程中,继承用于建立“属于”关系(或子类型)模型。 |
|
描述 F# 对象类型的成员。 |
|
描述用于定义形参并将实参传递给函数、方法和属性的语言支持, 其中包括有关如何通过引用传递的信息。 |
|
描述如何重载类或记录类型中的算术运算符,以及如何在全局级别重载算术运算符。 |
|
描述 F# 中对于类型转换的支持。 |
|
描述 F# 中的访问控制。 访问控制是指声明哪些客户端能够使用特定程序元素,例如类型、方法、函数等。 |
|
对模式进行描述。所谓模式,是一些要用来转换输入数据的规则;这些转换规则在整个 F# 语言中都要用到,以便采用多种方式将数据与模式进行比较、将数据分解为各个构成部分,或从数据中提取信息。 |
|
描述活动模式。 利用活动模式可以定义用于细分输入数据的命名分区。 可以使用活动模式按照自定义方式为每个分区分解数据。 |
|
描述 assert 表达式,该表达式是一种可用于测试表达式的调试功能。 调试模式中出现失败错误时,断言将生成系统错误对话框。 |
|
包含有关 F# 语言中异常处理支持的信息。 |
|
描述特性,利用特性可将元数据应用于编程构造。 |
|
描述关键字 use 和 using,这两个关键字可以控制资源的初始化和释放 |
|
描述 F# 中的命名空间支持。 通过使用命名空间,可以为程序元素的分组附加名称,从而将代码组织到相关的功能区域中。 |
|
描述模块。 F# 模块是 F# 代码的分组,例如 F# 程序中的值、类型和函数值。 通过将代码分组到各个模块中,可有助于将相关的代码放置在一起,并避免程序中出现名称冲突。 |
|
描述 open 的工作方式。 导入声明指定一个模块或命名空间,您无需使用完全限定名即可引用其中的元素。 |
|
描述签名和签名文件。 签名文件包含有关一组 F# 程序元素(例如类型、命名空间和模块)的公共签名的信息。 它可用于指定这些程序元素的可访问性。 |
|
描述为 XML 文档注释(也称为三斜杠注释)生成文档文件的支持。 与在其他 .NET 语言中一样,在 F# 中,可以利用代码注释生成文档。 |
|
描述在未启用轻量语法时 F# 构造的语法。 由代码文件顶部的 #light "off" 指令指示详细语法。 |
F# 类型
下表显示了描述 F# 语言所支持的类型的可用参考主题。
标题 |
说明 |
---|---|
描述值,值是一些具有特定类型的不可变数量;值可以为整数或浮点数、字符或文本、列表、序列、数组、元组、可区分联合、记录、类类型或函数值。 |
|
描述 F# 语言中使用的基本的基元类型。 同时还提供了对应的 .NET 类型以及每种类型的最小值和最大值。 |
|
描述 unit 类型,该类型是一种指示缺少特定值的类型;unit 类型只有一个值,当不存在或不需要其他值时,此值充当占位符。 |
|
描述 F# 中的字符串。 string 类型将不可变文本表示为由 Unicode 字符组成的序列。 string 是 .NET Framework 中 String 的别名。 |
|
描述元组,元组是一些未命名但经过排序的值的分组,这些值可能具有不同的类型。 |
|
F# 功能集合类型,包括阵列、 列表、 序列 (seq)、 地图和集的类型的概述。 |
|
描述列表。 F# 中的列表是一个有序的、不可变的同类型元素的序列。 |
|
描述选项类型。 当某个值可能存在也可能不存在时,可以使用 F# 中的选项。 选项具有基础类型,它既可能包含该类型的值,也可能不包含值。 |
|
描述序列。 序列是类型相同的所有元素的逻辑序列。 各个序列元素只有在需要时才会参与计算,因此,该表示形式可能会比文本元素计数所指示的要小。 |
|
描述数组。 数组是由相同类型的连续数据元素构成的、具有固定大小且从零开始的可变序列。 |
|
描述记录。 记录表示命名值的简单聚合,并可以选择包含成员。 |
|
描述可区分联合,这些联合支持具有以下特点的值:它可能属于多个命名用例中的一个,而每个命名用例的值和类型可能各不相同。 |
|
描述枚举,枚举是具有一组已定义的命名值的类型。 可以使用枚举来代替文本,以增强代码的可读性和可维护性。 |
|
描述引用单元格,引用单元格是一些存储位置,您可以利用它们来创建具有引用语义的可变变量。 |
|
描述类型缩写,即类型的替代名称。 |
|
描述类,类是表示可具有属性、方法和事件的对象的类型。 |
|
描述结构,结构是精简的对象类型,对于数据量小、行为简单的类型,它们要比类更有效率。 |
|
描述接口,接口指定其他类实现的相关成员集。 |
|
描述抽象类,抽象类是一些留有部分或全部成员未实现的类,以便可以由派生类来提供实现。 |
|
描述类型扩展,您可以通过类型扩展将新成员添加到以前已定义的对象类型。 |
|
描述可变类型。 可变类型批注表示参数、变量或值具有与所指定的类型兼容的类型,其兼容性是由面向对象的类或接口层次结构中的位置确定的。 |
|
描述委托,委托将函数调用表示为对象。 |
|
描述度量单位。 F# 中的浮点值可以具有关联的度量单位,这些度量单位通常用于指示长度、体积、质量等等。 |
|
描述类型提供和使用的内置类型的提供程序访问数据库和 web 服务提供演练的链接。 |
F# 表达式
下表列出了描述 F# 表达式的主题。
标题 |
说明 |
---|---|
描述 if...then...else 表达式,该表达式不仅可以运行代码的不同分支,还可以计算为不同的值,具体情况视给定的布尔表达式而定。 |
|
描述 match 表达式,该表达式提供基于表达式与一组模式的比较结果的分支控制。 |
|
描述 for...to 表达式,该表达式用于对循环变量的值范围进行循环迭代。 |
|
描述 for...in 表达式,该表达式是一种循环构造,用于循环访问可枚举集合(例如,范围表达式、序列、列表、数组或其他支持枚举的构造)中的模式匹配项。 |
|
描述 while...do 表达式,该表达式用于在指定的测试条件为 true 时执行迭代循环。 |
|
描述对象表达式,这些表达式可用于创建基于现有的基类型、接口或接口集动态创建的匿名对象类型的新实例。 |
|
描述延迟计算,延迟计算是指那些不会立即开始而要等到实际需要结果时才进行的计算。 |
|
描述 F# 中的计算表达式,它提供一种用于编写计算的方便语法,可以通过使用控制流构造和绑定来对这些计算进行排列和组合。 计算表达式可用于为 Monad 提供一种方便语法。Monad 是一种可用于管理函数程序中的数据、控制以及副作用的函数编程功能。 异步工作流是一种类型的计算表达式,它提供对异步计算和并行计算的支持。 有关更多信息,请参见异步工作流 (F#)。 |
|
描述异步工作流,这是一种语言功能,您可以通过它用近似于自然地编写同步代码的方式来编写异步代码。 |
|
描述代码引用,代码引用是一种可让您以编程方式生成和处理 F# 代码表达式的语言功能。 |
|
描述查询表达式,F# 实现 LINQ,并使您可以对数据源或可枚举集合编写查询的语言功能。 |
编译器支持的构造
下表列出了一些主题,这些主题描述编译器支持的特殊构造。
主题 |
说明 |
---|---|
描述处理器指令和编译器指令。 |
|
描述标识符 __LINE__、__SOURCE_DIRECTORY__ 和 __SOURCE_FILE__,这些标识符是内置值,可在代码中使用这些值来访问源代码行号、目录和文件名。 |