Teilen über


Ausführliche Syntax

Es gibt zwei Arten von Syntax für viele Konstrukte in F#: ausführliche Syntax und einfache Syntax. Die ausführliche Syntax ist nicht so häufig verwendet, hat aber den Vorteil, dass der Einzug weniger empfindlich ist. Die einfache Syntax ist kürzer und verwendet den Einzug, um den Anfang und das Ende von Konstrukten zu signalisieren, anstatt zusätzliche Schlüsselwörter wie begin, , end, inusw. Die Standardsyntax ist die einfache Syntax. In diesem Thema werden die Syntax für F#-Konstrukte beschrieben, wenn keine einfache Syntax aktiviert ist. Ausführliche Syntax ist immer aktiviert. Auch wenn Sie eine einfache Syntax aktivieren, können Sie für einige Konstrukte immer noch ausführliche Syntax verwenden.

Tabelle mit Konstrukten

Die folgende Tabelle zeigt die einfache und ausführliche Syntax für F#-Sprachkonstrukte in Kontexten, in denen ein Unterschied zwischen den beiden Formularen besteht. In dieser Tabelle schließen Winkelklammern (<>) vom Benutzer bereitgestellte Syntaxelemente ein. Ausführlichere Informationen zur in diesen Konstrukten verwendeten Syntax finden Sie in der Dokumentation für jedes Sprachkonstrukt.

Sprachkonstrukt Einfache Syntax Ausführliche Syntax
Zusammengesetzte Ausdrücke
<expression1>
<expression2>
<expression1>; <expression2>

Geschachtelte let Bindungen

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
Codeblock
(
    <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
Aufzeichnung
type <record-name> =
    {
        <field-declarations>
    }
    <value-or-member-definitions>
type <record-name> =
    {
        <field-declarations>
    }
    with
        <value-or-member-definitions>
    end
Klasse
type <class-name>(<params>) =
    ...
type <class-name>(<params>) =
    class
        ...
    end
structure
[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end
Diskriminierte Vereinigung
type <union-name> =
    | ...
    | ...
    ...
    <value-or-member definitions>
type <union-name> =
    | ...
    | ...
    ...
    with
        <value-or-member-definitions>
    end
Schnittstelle
type <interface-name> =
    ...
type <interface-name> =
    interface
        ...
    end
Objektausdruck
{ new <type-name>
    with
        <value-or-member-definitions>
        <interface-implementations>
}
{ new <type-name>
    with
        <value-or-member-definitions>
    end
    <interface-implementations>
}
Schnittstellenimplementierung
interface <interface-name>
    with
        <value-or-member-definitions>
interface <interface-name>
    with
        <value-or-member-definitions>
    end
Typerweiterung
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

Siehe auch