共用方式為


詳細語法 (F#)

有兩種語法可用於 F# 語言中的許多建構:「詳細語法」(Verbose Syntax) 和「輕量型語法」(Lightweight Syntax)。 詳細語法不常使用,但它的優點是較不注重縮排。 輕量型語法的長度較短,並且會使用縮排來表示建構開頭和結尾,而不會使用其他關鍵字如 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

類別

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

請參閱

概念

程式碼格式化方針 (F#)

其他資源

F# 語言參考

編譯器指示詞 (F#)