Megosztás a következőn keresztül:


Részletes szintaxis

Az F#-ban számos szerkezethez kétféle szintaxis érhető el: részletes szintaxis és egyszerűsített szintaxis. A részletes szintaxis nem ritkábban használatos, de előnye, hogy kevésbé érzékeny a behúzásra. Az egyszerűsített szintaxis rövidebb, és behúzás használatával jelzi a szerkezetek kezdetét és végét, nem pedig további kulcsszavakat, például begin, end, instb. Az alapértelmezett szintaxis az egyszerűsített szintaxis. Ez a témakör az F# szerkezetek szintaxisát ismerteti, ha az egyszerűsített szintaxis nincs engedélyezve. A részletes szintaxis mindig engedélyezve van, így még az egyszerűsített szintaxis engedélyezése esetén is használhat részletes szintaxist bizonyos szerkezetekhez.

Szerkezetek táblázata

Az alábbi táblázat az F# nyelvszerkezeteinek egyszerűsített és részletes szintaxisát mutatja be olyan környezetekben, ahol különbség van a két űrlap között. Ebben a táblázatban a szögletes zárójelek (<>) a felhasználó által megadott szintaxiselemeket tartalmaznak. Az egyes nyelvi szerkezetek dokumentációjában részletesebb információkat talál az ezekben a szerkezetekben használt szintaxisról.

Nyelvi szerkezet Egyszerűsített szintaxis Részletes szintaxis
összetett kifejezések
<expression1>
<expression2>
<expression1>; <expression2>

let beágyazott kötések

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
kódblokk
(
    <expression1>
    <expression2>
)
begin
    <expression1>;
    <expression2>;
end
'a... do'
for counter = start to finish do
    ...
for counter = start to finish do
    ...
done
'amíg... do'
while <condition> do
    ...
while <condition> do
    ...
done
'a... 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
Osztály
type <class-name>(<params>) =
    ...
type <class-name>(<params>) =
    class
        ...
    end
Szerkezet
[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end
diszkriminált unió
type <union-name> =
    | ...
    | ...
    ...
    <value-or-member definitions>
type <union-name> =
    | ...
    | ...
    ...
    with
        <value-or-member-definitions>
    end
interfész
type <interface-name> =
    ...
type <interface-name> =
    interface
        ...
    end
objektumkifejezés
{ new <type-name>
    with
        <value-or-member-definitions>
        <interface-implementations>
}
{ new <type-name>
    with
        <value-or-member-definitions>
    end
    <interface-implementations>
}
felület implementálása
interface <interface-name>
    with
        <value-or-member-definitions>
interface <interface-name>
    with
        <value-or-member-definitions>
    end
típuskiterjesztés
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

Lásd még