Udostępnij za pośrednictwem


Pełna składnia

W języku F#dostępne są dwie formy składni: składnia szczegółowa i uproszczona składnia. Składnia szczegółowa nie jest tak często używana, ale ma przewagę nad tym, że jest mniej wrażliwa na wcięcia. Uproszczona składnia jest krótsza i używa wcięcia w celu sygnalizowania początku i końca konstrukcji, a nie dodatkowych słów kluczowych, takich jak begin, end, ini tak dalej. Domyślna składnia to uproszczona składnia. W tym temacie opisano składnię konstrukcji języka F#, gdy nie włączono uproszczonej składni. Składnia szczegółowa jest zawsze włączona, więc nawet jeśli włączysz uproszczoną składnię, nadal można używać pełnej składni dla niektórych konstrukcji.

Tabela konstrukcji

W poniższej tabeli przedstawiono uproszczoną i szczegółową składnię konstrukcji języka F# w kontekstach, w których istnieje różnica między dwiema formami. W tej tabeli nawiasy kątowe (<>) otaczają elementy składni dostarczone przez użytkownika. Zapoznaj się z dokumentacją każdej konstrukcji języka, aby uzyskać bardziej szczegółowe informacje na temat składni używanej w tych konstrukcjach.

Konstrukcja języka Uproszczona składnia Składnia szczegółowa
wyrażenia złożone
<expression1>
<expression2>
<expression1>; <expression2>

powiązania zagnieżdżone 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
blok kodu
(
    <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
Rekord
type <record-name> =
    {
        <field-declarations>
    }
    <value-or-member-definitions>
type <record-name> =
    {
        <field-declarations>
    }
    with
        <value-or-member-definitions>
    end
Klasa
type <class-name>(<params>) =
    ...
type <class-name>(<params>) =
    class
        ...
    end
— struktura
[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end
związek dyskryminowany
type <union-name> =
    | ...
    | ...
    ...
    <value-or-member definitions>
type <union-name> =
    | ...
    | ...
    ...
    with
        <value-or-member-definitions>
    end
interfejs
type <interface-name> =
    ...
type <interface-name> =
    interface
        ...
    end
wyrażenie obiektu
{ new <type-name>
    with
        <value-or-member-definitions>
        <interface-implementations>
}
{ new <type-name>
    with
        <value-or-member-definitions>
    end
    <interface-implementations>
}
implementacja interfejsu
interface <interface-name>
    with
        <value-or-member-definitions>
interface <interface-name>
    with
        <value-or-member-definitions>
    end
rozszerzenie typu
type <type-name>
    with
        <value-or-member-definitions>
type <type-name>
    with
        <value-or-member-definitions>
    end
moduł
module <module-name> =
    ...
module <module-name> =
    begin
        ...
    end

Zobacz też