共用方式為


詳細語法

F# 中的許多建構都有兩種語法形式:「詳細資訊語法」和「輕量型語法」。 詳細資訊語法不常使用,但具有較不受縮排影響的優點。 輕量型語法較短,並使用縮排來指出建構的開頭和結尾,而不是使用 beginendin 等其他關鍵字。 預設語法是輕量型語法。 本主題描述未啟用輕量型語法時的 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
record
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
結構
[<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-name> =
    ...
module <module-name> =
    begin
        ...
    end

另請參閱