Udostępnij za pośrednictwem


Pełna składnia (F#)

Są dostępne dla wielu konstrukcje języka F# dwie formy składni: pełnej składni i lekki składni.Pełnej składni nie jest tak szeroko używane, ale ma zaletę, że są mniej czułe na wcięcie.Lekkie składnia jest krótszy i używa wcięcia do sygnalizowania początek i koniec konstrukcji, zamiast dodatkowe słowa kluczowe, takie jak begin, end, in, i tak dalej.Domyślnie przyjmowana jest składnia lekkie składni.W tym temacie opisano składnię F# konstrukcje, gdy lekkie składni nie jest włączona.Verbose składnia jest zawsze włączone, więc nawet jeśli włączysz lekkie składni, można nadal używać pełnej składni dla pewne konstrukcje.Lekkie składni można wyłączyć za pomocą #light "off" dyrektywy.

Tabela konstrukcje

W poniższej tabeli przedstawiono składnię lekki i verbose konstrukcje języka F# w kontekstach, w przypadku gdy istnieje różnica między dwoma formularzami.W tej tabeli elementy składni dostarczone przez użytkownika należy ująć w nawiasy ostre (<>).Zajrzyj do dokumentacji dla każdego konstrukcje językowe bardziej szczegółowe informacje o składni używanej w ramach tych konstrukcji.

Konstrukcje językowe

Lekkie składni

Składnia verbose

wyrażenia złożone

<expression1>
<expression2>
<expression1>; <expression2>

zagnieżdżone let wiązania

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 .. 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

dyskryminowanych Unii.

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>
}

w implementacji 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ż

Koncepcje

Wskazówki dotyczące formatowania kodu (F#)

Inne zasoby

Materiały referencyjne dotyczące języka F#

Dyrektywy kompilatora (F#)