F# 中的许多构造有两种语法形式: 详细语法 和 轻型语法。 详细语法不如常用的,但具有对缩进不太敏感的优势。 轻型语法较短,使用缩进来指示构造的开始和结尾,而不是其他关键字,例如 begin
, end
等等 in
。 默认语法是轻型语法。 本主题介绍未启用轻型语法时 F# 构造的语法。 详细语法始终处于启用状态,因此即使启用轻型语法,仍可以对某些构造使用详细语法。
构造表
下表显示了 F# 语言构造的轻型和详细语法,这些语法在两种形式之间存在差异的上下文中。 在此表中,尖括号 (<>) 将用户提供的语法元素括起来。 有关这些构造中使用的语法的更多详细信息,请参阅每个语言构造的文档。
语言构造 |
轻量语法 |
详细语法 |
复合表达式 |
<expression1>
<expression2>
|
<expression1>; <expression2>
|
嵌套 let 绑定
|
let f x =
let a = 1
let b = 2
x + a + b
|
let f x =
let a = 1 in
let b = 2 in
x + a + b
|
代码块 |
(
<expression1>
<expression2>
)
|
begin
<expression1>;
<expression2>;
end
|
'for...do' |
for counter = start to finish do
...
|
for counter = start to finish do
...
done
|
'while...do' |
while <condition> do
...
|
while <condition> do
...
done
|
'for...in' |
for var in start .. finish do
...
|
for var in start .. finish do
...
done
|
“do” |
do
...
|
do
...
in
|
记录 |
type <record-name> =
{
<field-declarations>
}
<value-or-member-definitions>
|
type <record-name> =
{
<field-declarations>
}
with
<value-or-member-definitions>
end
|
类 |
type <class-name>(<params>) =
...
|
type <class-name>(<params>) =
class
...
end
|
结构 |
[<StructAttribute>]
type <structure-name> =
...
|
type <structure-name> =
struct
...
end
|
歧视联合 |
type <union-name> =
| ...
| ...
...
<value-or-member definitions>
|
type <union-name> =
| ...
| ...
...
with
<value-or-member-definitions>
end
|
接口 |
type <interface-name> =
...
|
type <interface-name> =
interface
...
end
|
对象表达式 |
{ new <type-name>
with
<value-or-member-definitions>
<interface-implementations>
}
|
{ new <type-name>
with
<value-or-member-definitions>
end
<interface-implementations>
}
|
接口实现 |
interface <interface-name>
with
<value-or-member-definitions>
|
interface <interface-name>
with
<value-or-member-definitions>
end
|
类型扩展 |
type <type-name>
with
<value-or-member-definitions>
|
type <type-name>
with
<value-or-member-definitions>
end
|
模块 |
module <module-name> =
...
|
module <module-name> =
begin
...
end
|
另请参阅