Compartilhar via


Referência de palavras-chave

Este tópico contém links para informações sobre todas as palavras-chave da linguagem F#.

Tabela de palavras-chave de F#

A tabela a seguir mostra todas as palavras-chave de F# em ordem alfabética com breves descrições e links para tópicos relevantes com mais informações.

Palavra-chave Link Descrição
abstract Membros

Classes Abstratas
Indica um método que não possui implementação no tipo em que é declarado ou que é virtual e possui uma implementação padrão.
and let Associações

Registros

Membros

Restrições
É possível usar em associações e registros mutuamente recursivos, em declarações de propriedade e com diversas restrições em parâmetros genéricos.
as Classes

Correspondência padrão
É possível usar para dar ao objeto de classe atual um nome de objeto. Também é possível usar para dar um nome a um padrão inteiro dentro de uma correspondência de padrões.
assert Asserções É possível usar para verificar o código durante a depuração.
base Classes

Herança
É possível usar como o nome do objeto de classe base.
begin Sintaxe detalhada Na sintaxe detalhada, indica o início de um bloco de código.
class Classes Na sintaxe detalhada, indica o início de uma definição de classe.
default Membros Indica uma implementação de um método abstrato e é possível usar com uma declaração de método abstrato para criar um método virtual.
delegate Representantes É possível usar para declarar um representante.
do Associações do

Loops: for...to expressão

Loops: for...in expressão

Loops: while...do expressão
É possível usar em constructos de loop ou para executar códigos imperativos.
done Sintaxe detalhada Na sintaxe detalhada, indica o fim de um bloco de código em uma expressão de loop.
downcast Conversões cast e conversões É possível usar para a conversão em um tipo inferior na cadeia de herança.
downto Loops: for...to expressão Em uma expressão for, é possível usar ao contar regressivamente.
elif Expressões condicionais: if...then...else É possível usar na ramificação condicional. Forma abreviada de else if.
else Expressões condicionais: if...then...else É possível usar na ramificação condicional.
end Estruturas

Uniões discriminadas

Registros

Extensões de tipo

Sintaxe detalhada
Em definições de tipo e extensões de tipo, indica o final de uma seção de definições de membro.

Na sintaxe detalhada, é possível usar para especificar o final de um bloco de código que começa com a palavra-chave begin.
exception Tratamento de exceção

Tipos de Exceção
É possível usar para declarar um tipo de exceção.
extern Funções externas Indica que um elemento de programa declarado está definido em outro binário ou assembly.
false Tipos primitivos É possível usar como um literal booliano.
finally Exceções: a expressão try...finally É possível usar com try para introduzir um bloco de código que é executado independentemente de uma exceção.
fixed Fixo É possível usar para "fixar" um ponteiro na pilha a fim de evitar a coleta de lixo.
for Loops: for...to expressão

Loops: expressão for...in
É possível usar em constructos de loop.
fun Expressões lambda: a palavra-chave fun É possível usar em expressões lambda, também conhecidas como funções anônimas.
function Expressões de correspondência

Expressões lambda: a palavra-chave fun
É possível usar como uma alternativa mais curta para a palavra-chave fun e uma expressão match em uma expressão lambda com correspondência de padrões em um único argumento.
global Namespaces É possível usar para referenciar o namespace .NET de nível superior.
if Expressões condicionais: if...then...else É possível usar em constructos de ramificação condicional.
in Loops: expressão for...in

Sintaxe detalhada
É possível usar para expressões de sequência e, em sintaxe detalhada, para separar expressões de associações.
inherit Herança É possível usar para especificar uma classe base ou interface base.
inline Funções

Funções Embutidas
É possível usar para indicar uma função que deve ser integrada diretamente no código do chamador.
interface Interfaces É possível usar para declarar e implementar interfaces.
internal Controle de acesso É possível usar para especificar que um membro é visível dentro de um assembly, mas não fora.
lazy Expressões lentas É possível usar para especificar uma expressão que deve ser executada somente quando um resultado for necessário.
let let Associações É possível usar para associar um nome a uma função ou valor.
let! Expressões assíncronas

Expressões de tarefa

Expressões de computação
É possível usar em expressões assíncronas para associar um nome ao resultado de uma computação assíncrona ou, em outras expressões de computação, para associar um nome a um resultado, que é do tipo de computação.
match Expressões de correspondência É possível usar para branches comparando um valor com um padrão.
match! Expressões de computação É possível usar para embutir uma chamada em uma expressão de computação e em uma correspondência de padrões no resultado.
member Membros É possível usar para declarar uma propriedade ou método em um tipo de objeto.
module Módulos É possível usar para associar um nome a um grupo de tipos, valores e funções relacionados, a fim de separá-lo logicamente de outro código.
mutable Associações let É possível usar para declarar uma variável, ou seja, um valor que pode ser alterado.
namespace Namespaces É possível usar para associar um nome a um grupo de tipos e módulos relacionados, a fim de separá-lo logicamente de outro código.
new Construtores

Restrições
É possível usar para declarar, definir ou invocar um construtor que cria ou pode criar um objeto.

Também é possível usar em restrições de parâmetros genéricos para indicar que um tipo deve ter um determinado construtor.
not Referência de símbolos e operadores

Restrições
Não é uma palavra-chave. No entanto, not struct é usado em combinação como uma restrição de parâmetro genérico.
null Valores nulos

Restrições
Indica a ausência de um objeto.

Também é possível usar em restrições de parâmetros genéricos.
of Uniões discriminadas

Representantes

Tipos de Exceção
É possível usar em uniões discriminadas para indicar o tipo de categorias de valores e em declarações de representante e exceção.
open Declarações de Importação: a palavra-chave open É possível usar para disponibilizar o conteúdo de um namespace ou módulo sem qualificação.
or Referência de símbolos e operadores

Restrições
É possível usar com condições boolianas como um operador or booliano. Equivalente a ||.

Também é possível usar em restrições de membro.
override Membros É possível usar para implementar uma versão de um método abstrato ou virtual que difere da versão base.
private Controle de acesso Restringe o acesso a um membro para códigos do mesmo tipo ou módulo.
public Controle de acesso Permite o acesso a um membro de fora do tipo.
rec Funções É possível usar para indicar que uma função é recursiva.
return Expressões de computação

Expressões assíncronas

Expressões de tarefa
É possível usar para indicar um valor a ser fornecido como resultado de uma expressão de computação.
return! Expressões de computação

Expressões assíncronas

Expressões de tarefa
É possível usar para indicar uma expressão de computação que, quando avaliada, fornece o resultado da expressão de computação contida.
select Expressões de Consulta É possível usar em expressões de consulta para especificar quais campos ou colunas extrair. Observe que esta é uma palavra-chave contextual, o que significa que ela não é realmente uma palavra reservada e que só funciona como uma palavra-chave no contexto apropriado.
static Membros É possível usar para indicar um método ou propriedade que pode ser chamado sem uma instância de um tipo ou um membro de valor compartilhado entre todas as instâncias de um tipo.
struct Estruturas

Tuplas

Restrições
É possível usar para declarar um tipo de estrutura.

É possível usar para especificar uma tupla de struct.

Também é possível usar em restrições de parâmetros genéricos.

É possível usar para compatibilidade com OCaml em definições de módulo.
then Expressões condicionais: if...then...else

Construtores
É possível usar em expressões condicionais.

Também é possível usar para realizar efeitos colaterais após a construção de objeto.
to Loops: for...to expressão É possível usar em loops for para indicar um intervalo.
true Tipos primitivos É possível usar como um literal booliano.
try Exceções: a expressão try...with

Exceções: a expressão try...finally
É possível usar para introduzir um bloco de código que pode gerar uma exceção. É possível usar com with ou finally.
type Tipos F#

Classes

Registros

Estruturas

Enumerações

Uniões discriminadas

Abreviações de tipo

Unidades de Medida
É possível usar para declarar uma classe, um registro, uma estrutura, uma união discriminada, um tipo de enumeração, uma unidade de medida ou uma abreviação de tipo.
upcast Conversões cast e conversões É possível usar para a conversão em um tipo que é superior na cadeia de herança.
use Gerenciamento de Recursos: a palavra-chave use É possível usar no lugar de let para valores que precisam que Dispose seja chamado a fim de liberar recursos.
use! Expressões de computação

Expressões assíncronas

Expressões de tarefa
É possível usar no lugar de let! em expressões assíncronas e em outras expressões de computação para valores que precisam que Dispose seja chamado a fim de liberar recursos.
val Campos Explícitos: a val Palavra-Chave

Assinaturas

Membros
É possível usar em uma assinatura para indicar um valor ou em um tipo para declarar um membro, em situações limitadas.
void Tipos primitivos Indica o tipo .NET void. É possível usar ao interoperar com outras linguagens .NET.
when Restrições É possível usar para condições boolianas (when guards) em correspondências de padrão e para introduzir uma cláusula de restrição para um parâmetro de tipo genérico.
while Loops: while...do expressão Introduz um constructo de loop.
with Expressões de correspondência

Expressões de objeto

Copiar e atualizar expressões de registro

Extensões de tipo

Exceções: a expressão try...with
É possível usar com a palavra-chave match em expressões de correspondência de padrões. Também é possível usar em expressões de objeto, expressões de cópia de registro e extensões de tipo para introduzir definições de membros e manipuladores de exceção.
yield Listas, Matrizes, Sequências É possível usar em uma lista, matriz ou expressão de sequência a fim de produzir um valor para uma sequência. Normalmente, é possível omitir, pois está implícito na maioria das situações.
yield! Expressões de computação

Expressões assíncronas

Expressões de tarefa
É possível usar em uma expressão de computação para anexar o resultado de uma determinada expressão de computação a uma coleção de resultados para a expressão de computação contida.
const Provedores de tipos Os provedores de tipo permitem o uso de const como palavra-chave para especificar um literal constante como um argumento de parâmetro de tipo.

Os seguintes tokens são reservados em F# porque são palavras-chave na linguagem OCaml:

  • asr
  • land
  • lor
  • lsl
  • lsr
  • lxor
  • mod
  • sig

Ao usar a opção do compilador --mlcompatibility, as palavras-chave acima estarão disponíveis para uso como identificadores.

Os seguintes tokens são reservados como palavras-chave para expansão futura de F#:

  • break
  • checked
  • component
  • const
  • constraint
  • continue
  • event
  • external
  • include
  • mixin
  • parallel
  • process
  • protected
  • pure
  • sealed
  • tailcall
  • trait
  • virtual

Os seguintes tokens já foram reservados como palavras-chave, mas foram liberados na F# 4.1, portanto, agora é possível usá-los como identificadores:

Palavra-chave Motivo
method Use member para introduzir métodos.
constructor Use new para introduzir constructos.
atomic Relacionado à moda da memória transacional por volta de 2006. Agora, essa seria uma expressão de computação definida pela biblioteca.
eager Não é mais necessário; inicialmente foi projetado para ser let eager para corresponder a um possível let lazy.
object Não há necessidade de reservar.
recursive Use rec.
functor Se F# adicionasse módulos parametrizados, você usaria module M(args) = ....
measure O atributo [<Measure>] é suficiente.
volatile O atributo [<Volatile>] é suficiente.

Confira também