Ausführliche Syntax

Es gibt zwei Syntaxformen, die für viele Konstrukte in F# verfügbar sind: ausführliche Syntax und einfache Syntax. Die ausführliche Syntax wird nicht wie üblich verwendet, hat aber den Vorteil, dass sie weniger empfindlich gegenüber Einzügen 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 oder inzu verwenden. Die Standardsyntax ist die einfache Syntax. Dieses Thema beschreibt die Syntax für F#-Konstrukte, wenn die einfache Syntax nicht aktiviert ist. Ausführliche Syntax ist immer aktiviert. Selbst wenn Sie die einfache Syntax aktivieren, können Sie für einige Konstrukte immer noch die ausführliche Syntax verwenden.

Tabelle der Konstrukte

Die folgende Tabelle zeigt die einfache und ausführliche Syntax für F#-Sprachkonstrukte in Kontexten, in denen es einen Unterschied zwischen den beiden Formen gibt. In dieser Tabelle umschließen spitze Klammern (<>) die vom Benutzer / der Benutzerin eingegebenen Syntaxelemente. Ausführlichere Informationen zur Syntax, die in diesen Konstrukten verwendet wird, finden Sie in der Dokumentation zu den einzelnen Sprachkonstrukten.

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
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
structure
[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end
Unterscheidungs-Unions
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
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
module
module <module-name> =
    ...
module <module-name> =
    begin
        ...
    end

Weitere Informationen