Partilhar via


Sintaxe Detalhada

Existem duas formas de sintaxe disponíveis para muitas construções em F#: sintaxe detalhada e sintaxe leve. A sintaxe detalhada não é tão comumente usada, mas tem a vantagem de ser menos sensível ao recuo. A sintaxe leve é mais curta e usa recuo para sinalizar o início e o fim das construções, em vez de palavras-chave adicionais como begin, end, ine assim por diante. A sintaxe padrão é a sintaxe leve. Este tópico descreve a sintaxe para construções F# quando a sintaxe leve não está habilitada. A sintaxe detalhada está sempre habilitada, portanto, mesmo que você habilite a sintaxe leve, ainda poderá usar sintaxe detalhada para algumas construções.

Tabela de Construções

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

Construção da linguagem Sintaxe leve Sintaxe detalhada
expressões compostas
<expression1>
<expression2>
<expression1>; <expression2>

ligações aninhadas 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
bloco de código
(
    <expression1>
    <expression2>
)
begin
    <expression1>;
    <expression2>;
end
«Pois... fazer»
for counter = start to finish do
    ...
for counter = start to finish do
    ...
done
«Enquanto... fazer»
while <condition> do
    ...
while <condition> do
    ...
done
«Pois... em»
for var in start .. finish do
    ...
for var in start .. finish do
    ...
done
'fazer'
do
    ...
do
    ...
in
recorde
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
sindicato discriminado
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 do 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