Compartir a través de


Sintaxis detallada (F#)

Hay dos formas de sintaxis disponibles para muchas construcciones del lenguaje F#: la sintaxis detallada y la sintaxis ligera. La sintaxis detallada no se suele utilizar, pero presenta la ventaja de ser menos sensible a la sangría. La sintaxis ligera es más corta y utiliza la sangría para señalar el principio y el final de las construcciones, en lugar de palabras clave adicionales como begin, end, in, etc. La sintaxis predeterminada es la sintaxis ligera. En este tema se describe la sintaxis para las construcciones de F# cuando no está habilitada la sintaxis ligera. La sintaxis detallada siempre está habilitada, de modo que aunque se habilite la sintaxis ligera, sigue siendo posible utilizar la sintaxis detallada para algunas construcciones. La sintaxis ligera se puede deshabilitar mediante la directiva #light "off".

Tabla de construcciones

En la tabla siguiente se muestran las sintaxis ligera y detallada para las construcciones del lenguaje F# en contextos donde existe una diferencia entre las dos formas. En esta tabla, los elementos de sintaxis proporcionados por el usuario están entre corchetes angulares (<>). Consulte la documentación de cada construcción de lenguaje a fin de obtener información más detallada sobre la sintaxis utilizada dentro de estas construcciones.

Construcción de lenguaje

Sintaxis ligera

Sintaxis detallada

expresiones compuestas

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

enlaces let anidados

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

bloque de código

    <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

registro

type <record-name> =
    {
        <field-declarations>
    }
    <value-or-member-definitions>
type <record-name> =
    {
        <field-declarations>
    }
    with
        <value-or-member-definitions>
    end

clase

type <class-name>(<params>) =
    ...
type <class-name>(<params>) =
    class
        ...
    end

estructura

[<StructAttribute>]
type <structure-name> =
    ...
type <structure-name> =
    struct
        ...
    end

unión discriminada

type <union-name> =
    | ...
    | ...
    ...
    <value-or-member definitions>
type <union-name> =
    | ...
    | ...
    ...
    with
         <value-or-member-definitions>

end

interfaz

type <interface-name> =
    ...
type <interface-name> =
    interface
        ...
    end

expresión de objeto

{ new <type-name>
    with
        <value-or-member-definitions>
    <interface-implementations>
}
{ new <type-name>
    with
        <value-or-member-definitions>
    end
    <interface-implementations>
}

implementación de interfaz

interface <interface-name>
    with
        <value-or-member-definitions>
interface <interface-name>
    with
        <value-or-member-definitions>
    end

extensión de tipo

type <type-name>
    with
        <value-or-member-definitions>
type <type-name>
    with
        <value-or-member-definitions>
    end

módulo

module <module-name> =
    ...
module <module-name> =
    begin
        ...
    end

Vea también

Conceptos

Instrucciones de formato de código (F#)

Otros recursos

Referencia del lenguaje F#

Directivas de compilador (F#)