Podrobná syntaxe

Pro mnoho konstruktorů v jazyce F# jsou k dispozici dvě formy syntaxe: podrobná syntaxe a jednoduchá syntaxe. Podrobná syntaxe není tak často používána, ale má výhodu, že je méně citlivá na odsazení. Zjednodušená syntaxe je kratší a používá odsazení k označení začátku a konce konstruktorů, nikoli dalších klíčových slov, jako je begin, end, ina tak dále. Výchozí syntaxe je jednoduchá syntaxe. Toto téma popisuje syntaxi konstruktorů jazyka F#, pokud není povolená jednoduchá syntaxe. Podrobná syntaxe je vždy povolená, takže i když povolíte odlehčenou syntaxi, můžete u některých konstruktorů stále používat podrobnou syntaxi.

Tabulka konstruktorů

Následující tabulka ukazuje jednoduchou a podrobnou syntaxi pro konstruktory jazyka F# v kontextech, kde je mezi těmito dvěma formuláři rozdíl. V této tabulce lomené závorky (<>) ohraničují prvky syntaxe zadané uživatelem. Podrobnější informace o syntaxi použité v těchto konstruktorech najdete v dokumentaci ke každému konstruktoru jazyka.

Konstruktor jazyka Jednoduchá syntaxe Podrobná syntaxe
složené výrazy
<expression1>
<expression2>
<expression1>; <expression2>

vnořené let vazby

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
blok kódu
(
    <expression1>
    <expression2>
)
begin
    <expression1>;
    <expression2>;
end
"pro... do'
for counter = start to finish do
    ...
for counter = start to finish do
    ...
done
"zatímco... do'
while <condition> do
    ...
while <condition> do
    ...
done
"pro... v'
for var in start .. finish do
    ...
for var in start .. finish do
    ...
done
"do"
do
    ...
do
    ...
in
Záznam
type <record-name> =
    {
        <field-declarations>
    }
    <value-or-member-definitions>
type <record-name> =
    {
        <field-declarations>
    }
    with
        <value-or-member-definitions>
    end
Třída
type <class-name>(<params>) =
    ...
type <class-name>(<params>) =
    class
        ...
    end
– struktura
[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end
diskriminovaná unie
type <union-name> =
    | ...
    | ...
    ...
    <value-or-member definitions>
type <union-name> =
    | ...
    | ...
    ...
    with
        <value-or-member-definitions>
    end
rozhraní
type <interface-name> =
    ...
type <interface-name> =
    interface
        ...
    end
object expression
{ new <type-name>
    with
        <value-or-member-definitions>
        <interface-implementations>
}
{ new <type-name>
    with
        <value-or-member-definitions>
    end
    <interface-implementations>
}
implementace rozhraní
interface <interface-name>
    with
        <value-or-member-definitions>
interface <interface-name>
    with
        <value-or-member-definitions>
    end
rozšíření typu
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

Viz také