关键字参考
本主题包含指向所有 F# 语言关键字的相关信息的链接。
F# 关键字表
下表按字母顺序显示了所有 F# 关键字,并提供了简要说明和包含更多信息的相关主题的链接。
关键字 | 链接 | 描述 |
---|---|---|
abstract |
成员 抽象类 |
表示一种方法,该方法在进行声明的类型中没有任何实现,或该方法为虚拟方法且包含默认实现。 |
and |
let 绑定记录 成员 约束 |
用于互相递归绑定和记录、属性声明,并用于对泛型参数的多个约束。 |
as |
类 模式匹配 |
用于为当前类对象提供对象名称。 此外,也用于为模式匹配中的整个模式命名。 |
assert |
断言 | 用于在调试期间验证代码。 |
base |
类 继承 |
用作基类对象的名称。 |
begin |
详细语法 | 在详细语法中,表示代码块的开头。 |
class |
类 | 在详细语法中,表示类定义的开头。 |
default |
成员 | 表示抽象方法的实现;与抽象方法声明配合使用可创建虚拟方法。 |
delegate |
委托 | 用于声明委托。 |
do |
do 绑定 循环: for...to 表达式循环: for...in 表达式循环: while...do 表达式 |
用于循环构造或执行强制性代码。 |
done |
详细语法 | 在详细语法中,表示循环表达式中代码块的结尾。 |
downcast |
强制转换和转换 | 用于转换为较低继承链中的类型。 |
downto |
循环:for...to 表达式 |
在 for 表达式中,在反向计数时使用。 |
elif |
条件表达式:if...then...else |
用于条件性分支。 else if 的缩写。 |
else |
条件表达式:if...then...else |
用于条件性分支。 |
end |
结构 可区分联合 记录 类型扩展 详细语法 |
在类型定义和类型扩展中,表示成员定义部分的结尾。 在详细语法中,用于指定以 begin 关键字开头的代码块的结尾。 |
exception |
异常处理 异常类型 |
用于声明异常类型。 |
extern |
外部函数 | 表示声明的程序元素在其他二进制文件或程序集中定义。 |
false |
基元类型 | 用作布尔文本。 |
finally |
异常:try...finally 表达式 |
与 try 配合使用,以引入无论是否发生异常都将执行的代码块。 |
fixed |
固定 | 用于在堆栈上“固定”一个指针,防止对其进行垃圾回收。 |
for |
循环:for...to 表达式循环:for...in 表达式 |
用于循环构造。 |
fun |
Lambda 表达式:fun 关键字 |
用于 Lambda 表达式,也称为异步函数。 |
function |
Match 表达式 Lambda 表达式:fun 关键字 |
用作 fun 关键字和 Lambda 表达式中对单个参数进行模式匹配的 match 表达式的较短替代项。 |
global |
命名空间 | 用于引用顶级 .NET 命名空间。 |
if |
条件表达式:if...then...else |
用于条件性分支构造。 |
in |
循环:for...in 表达式 详细语法 |
用于序列表达式;在详细语法中,用于将表达式与绑定分隔。 |
inherit |
继承 | 用于指定基类或基接口。 |
inline |
函数 内联函数 |
用于表示应直接集成到调用方代码中的函数。 |
interface |
接口 | 用于声明和实现接口。 |
internal |
访问控制 | 用于指定某成员在程序集内可见,但在程序集外不可见。 |
lazy |
延迟表达式 | 用于指定仅当需要结果时要执行的表达式。 |
let |
let 绑定 |
用于将名称关联或绑定到值或函数。 |
let! |
异步表达式 任务表达式 计算表达式 |
在异步表达式中用于将名称绑定到异步计算的结果,或者在其他计算表达式中用于将名称绑定到计算类型的结果。 |
match |
Match 表达式 | 用于通过比较值与模式来进行分支。 |
match! |
计算表达式 | 用于内联对计算表达式的调用,并对其结果进行模式匹配。 |
member |
成员 | 用于声明对象类型中的属性或方法。 |
module |
模块 | 用于将名称与一组相关类型、值和函数关联,从逻辑上将其与其他代码分开。 |
mutable |
let 绑定 | 用于声明变量,即,可更改的值。 |
namespace |
命名空间 | 用于将名称与一组相关类型和模块关联,从逻辑上将其与其他代码分开。 |
new |
构造函数 约束 |
用于声明、定义或调用创建或可以创建对象的构造函数。 此外,也用于泛型参数约束,表示某个类型必须具有特定的构造函数。 |
not |
符号和运算符参考 约束 |
实际上不是关键字。 但是,组合形式的 not struct 用作泛型参数约束。 |
null |
Null 值 约束 |
表示缺少对象。 此外,也用于泛型参数约束。 |
of |
可区分联合 委托 异常类型 |
在可区分联合中用于表示值类别的类型,并用于委托和异常声明。 |
open |
导入声明:open 关键字 |
用于使命名空间或模块的内容无需限定即可使用。 |
or |
符号和运算符参考 约束 |
与布尔条件一起用作布尔 or 运算符。 等效于 ||。此外,也用于成员约束。 |
override |
成员 | 用于实现与基础版本不同的抽象或虚拟方法的版本。 |
private |
访问控制 | 仅限同一类型或模块中的代码访问成员。 |
public |
访问控制 | 允许从类型外部访问成员。 |
rec |
函数 | 用于表示某函数为递归函数。 |
return |
计算表达式 异步表达式 任务表达式 |
用于表示作为计算表达式的结果提供的值。 |
return! |
计算表达式 异步表达式 任务表达式 |
用于表示计算表达式,在计算该表达式时,将提供包含计算表达式的结果。 |
select |
查询表达式 | 在查询表达式中用于指定要提取的字段或列。 注意,这是上下文关键字,意味着它实际上并不是保留字,而只会充当相应上下文中的关键字。 |
static |
成员 | 用于表示可在没有类型实例的情况下调用的方法或属性,或者在某类型的所有实例中共享的值成员。 |
struct |
结构 元组 约束 |
用于声明结构类型。 用于指定结构元组。 此外,也用于泛型参数约束。 用于模块定义中的 OCaml 兼容性。 |
then |
条件表达式:if...then...else 构造函数 |
用于条件表达式。 此外,也用于处理构造对象后的意外结果。 |
to |
循环:for...to 表达式 |
在 for 循环中用于表示范围。 |
true |
基元类型 | 用作布尔文本。 |
try |
异常:try...with 表达式 异常:try...finally 表达式 |
用于引入可能生成异常的代码块。 与 with 或 finally 配合使用。 |
type |
F# 类型 类 记录 结构 枚举 可区分联合 类型缩写 度量单位 |
用于声明类、记录、结构、可区分联合、枚举类型、度量单位或类型缩写。 |
upcast |
强制转换和转换 | 用于转换为较高继承链中的类型。 |
use |
资源管理:use 关键字 |
代替 let 用于需要调用 Dispose 来释放资源的值。 |
use! |
计算表达式 异步表达式 任务表达式 |
代替 let! 用于异步表达式和其他计算表达式中需要调用 Dispose 来释放资源的值。 |
val |
显式字段:val 关键字签名 成员 |
在签名中用于表示值,或在类型中用于声明成员,但情况有限。 |
void |
基元类型 | 表示 .NET void 类型。 在与其他 .NET 语言互操作时使用。 |
when |
约束 | 用于模式匹配的布尔条件(临界时)以及用于引入泛型类型参数的约束子句。 |
while |
循环:while...do 表达式 |
引入循环构造。 |
with |
Match 表达式 对象表达式 复制和更新记录表达式 类型扩展 异常: try...with 表达式 |
在模式匹配表达式中与 match 关键字配合使用。 此外,也用于对象表达式、记录复制表达式和类型扩展,以引入成员定义和异常处理程序。 |
yield |
列表、数组、序列 | 在列表、数组或序列表达式中用于生成序列的值。 通常可以省略,因为在大多数情况下它是隐式的。 |
yield! |
计算表达式 异步表达式 任务表达式 |
在计算表达式中用于将给定计算表达式的结果追加到包含计算表达式的结果集合。 |
const |
类型提供程序 | 类型提供程序允许使用 const 作为关键字,以指定常量文本作为类型形参实参。 |
F# 保留了以下标记,因为它们是 OCaml 语言中的关键字:
asr
land
lor
lsl
lsr
lxor
mod
sig
如果使用 --mlcompatibility
编译器选项,则上述关键字可用作标识符。
以下标记作为关键字保留,以供将来扩充 F#:
break
checked
component
const
constraint
continue
event
external
include
mixin
parallel
process
protected
pure
sealed
tailcall
trait
virtual
以下标记曾经保留为关键字,但在 F# 4.1 中释放,因此现在可以用作标识符:
关键字 | 原因 |
---|---|
method |
使用 member 来引入方法。 |
constructor |
使用 new 来引入构造函数。 |
atomic |
与 2006 年左右掀起的事务性内存热潮有关。 现已被库定义的计算表达式取代。 |
eager |
不再需要;它最初设计为 let eager ,用于匹配可能的 let lazy 。 |
object |
无需保留。 |
recursive |
使用 rec 。 |
functor |
如果 F# 添加了参数化模块,我们将使用 module M(args) = ... 。 |
measure |
属性 [<Measure>] 足够。 |
volatile |
属性 [<Volatile>] 足够。 |