详细语法 (F#)
可用于 F# 语言中的多种构造的语法有两种形式:“详细语法”和“轻量语法”。 详细语法并不常用,但它的优势是对缩进的敏感程度较低。 轻量语法比较简短,并使用缩进来表示构造的开头和结尾,而不是使用诸如 begin、end、in 等附加关键字。 默认语法为轻量语法。 本主题介绍在未启用轻量语法时 F# 构造的语法。 详细语法始终处于启用状态,因此,即使您启用轻量语法,也仍然可以为某些构造使用详细语法。 可通过使用 #light "off" 指令禁用轻量语法。
构造表
下表显示了在轻量语法和详细语法存在差异的上下文中,用于 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 .. 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
|
class |
type <class-name>(<params>) =
...
|
type <class-name>(<params>) =
class
...
end
|
Structure — 结构 |
[<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 |
interface |
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 <module-name> =
...
|
module <module-name> =
begin
...
end
|
请参见
概念
代码格式设置准则 (F#)
其他资源
F# 语言参考
编译器指令 (F#)