Sintaxe muito detalhada (F#)

Há duas formas de sintaxe para muitas construções no idioma F#: a sintaxe detalhada e sintaxe leve. A sintaxe detalhada não habitualmente utilizada, mas tem a vantagem de ser menos confidencial para o recuo. A sintaxe leve é menor e usa o recuo para sinalizar o início e fim das construções, em vez de palavras-chave adicionais, como begin, end, ine assim por diante. A sintaxe padrão é a sintaxe de leve. Este tópico descreve a sintaxe para construções de F# quando leve sintaxe não está habilitado. Sintaxe muito detalhada está sempre ativada, portanto, mesmo se você habilitar a sintaxe leve, você ainda pode usar a sintaxe muito detalhada para algumas construções. Você pode desativar a sintaxe leve usando o #light "off" diretiva.

Tabela de construções

A tabela a seguir mostra a sintaxe de leve e detalhada de construções de linguagem F# em contextos onde há uma diferença entre as duas formas. Nesta tabela, o colchetes angulares (<>), coloque-os elementos de sintaxe fornecida pelo usuário. Consulte a documentação para cada construção de linguagem para obter informações detalhadas sobre a sintaxe usada dentro dessas construções.

Construção de linguagem

Sintaxe leve

Sintaxe detalhada

expressões de compostos

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

aninhados let ligações

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

bloco 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

classe

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

estrutura

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

união discriminada

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

end

interface

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

expressão de objeto

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

implementação de interface

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

extensão 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

Consulte também

Conceitos

Diretrizes de formatação (F#) de código.

Outros recursos

Referência de linguagem do F#

Diretivas de compilador (F#)