Dela via


Utförlig syntax

Det finns två typer av syntax för många konstruktioner i F#: utförlig syntax och enkel syntax. Den utförliga syntaxen används inte lika ofta, men har fördelen att den är mindre känslig för indrag. Den lätta syntaxen är kortare och använder indrag för att signalera början och slutet av konstruktionerna, i stället för ytterligare nyckelord som begin, end, inoch så vidare. Standardsyntaxen är den lätta syntaxen. I det här avsnittet beskrivs syntaxen för F#-konstruktioner när enkel syntax inte är aktiverad. Utförlig syntax är alltid aktiverad, så även om du aktiverar enkel syntax kan du fortfarande använda utförlig syntax för vissa konstruktioner.

Tabell med konstruktioner

I följande tabell visas den enkla och utförliga syntaxen för F#-språkkonstruktioner i kontexter där det finns en skillnad mellan de två formulären. I den här tabellen omger vinkelparenteser (<>) användarangivna syntaxelement. Mer detaljerad information om syntaxen som används i dessa konstruktioner finns i dokumentationen för varje språkkonstruktion.

Språkkonstruktion Enkel syntax Utförlig syntax
sammansatta uttryck
<expression1>
<expression2>
<expression1>; <expression2>

kapslade let bindningar

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
kodblock
(
    <expression1>
    <expression2>
)
begin
    <expression1>;
    <expression2>;
end
"för... do'
for counter = start to finish do
    ...
for counter = start to finish do
    ...
done
Medan... do'
while <condition> do
    ...
while <condition> do
    ...
done
"för... i"
for var in start .. finish do
    ...
for var in start .. finish do
    ...
done
"do"
do
    ...
do
    ...
in
Post
type <record-name> =
    {
        <field-declarations>
    }
    <value-or-member-definitions>
type <record-name> =
    {
        <field-declarations>
    }
    with
        <value-or-member-definitions>
    end
Klass
type <class-name>(<params>) =
    ...
type <class-name>(<params>) =
    class
        ...
    end
Struktur
[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end
diskriminerade fackföreningar
type <union-name> =
    | ...
    | ...
    ...
    <value-or-member definitions>
type <union-name> =
    | ...
    | ...
    ...
    with
        <value-or-member-definitions>
    end
gränssnitt
type <interface-name> =
    ...
type <interface-name> =
    interface
        ...
    end
objektuttryck
{ new <type-name>
    with
        <value-or-member-definitions>
        <interface-implementations>
}
{ new <type-name>
    with
        <value-or-member-definitions>
    end
    <interface-implementations>
}
gränssnittsimplementering
interface <interface-name>
    with
        <value-or-member-definitions>
interface <interface-name>
    with
        <value-or-member-definitions>
    end
typtillägg
type <type-name>
    with
        <value-or-member-definitions>
type <type-name>
    with
        <value-or-member-definitions>
    end
modul
module <module-name> =
    ...
module <module-name> =
    begin
        ...
    end

Se även