Compartilhar via


Referência de símbolo e operador

Este artigo inclui tabelas que descrevem os símbolos e operadores usados em F# e fornece uma breve descrição de cada um. Alguns símbolos e operadores têm duas ou mais entradas quando usados em várias funções.

Comentário, diretiva do compilador e símbolos de atributo

A tabela a seguir descreve símbolos relacionados a comentários, diretivas do compilador e atributos.

Símbolo ou operador Links Descrição
(*...*) Delimita um comentário que pode abranger várias linhas.
// Indica o início de um comentário de linha única.
/// Documentação XML Indica um comentário XML.
# Diretivas do compilador Prefixa uma diretiva de pré-processador ou compilador.
[<...>] Atributos Delimita um atributo.

Símbolos de cadeia de caracteres e identificador

A tabela a seguir descreve símbolos relacionados a cadeias de caracteres.

Símbolo ou operador Links Descrição
" Cadeias de caracteres Delimita uma cadeia de caracteres de texto.
@" Cadeias de caracteres Inicia uma cadeia de caracteres de texto verbatim, que pode incluir cílios invertidas e outros caracteres.
""" Cadeias de caracteres Delimita uma cadeia de caracteres de texto com aspas triplas, que pode incluir barras invertidas, aspas duplas e outros caracteres.
$" Cadeias de caracteres interpoladas Inicia uma cadeia de caracteres interpolada.
' literais Delimita um literal de caractere único.
``...`` Delimita um identificador que, de outra forma, não seria um identificador legal, como uma palavra-chave de linguagem.
\ Cadeias de caracteres Escapa do próximo caractere; usado em literais de caractere e cadeia de caracteres.

Operadores aritméticos

A tabela a seguir descreve os operadores aritméticos.

Símbolo ou operador Links Descrição
+ Operadores aritméticos
  • Quando usado como um operador binário, adiciona os lados esquerdo e direito.
  • Quando usado como um operador unário, indica uma quantidade positiva. (Formalmente, ele produz o mesmo valor com o sinal inalterado.)
- Operadores aritméticos
  • Quando usado como um operador binário, subtrai o lado direito do lado esquerdo.
  • Quando usado como um operador unário, executa uma operação de negação.
* Operadores aritméticos

Tuplas

Unidades de Medida
  • Quando usado como um operador binário, multiplica os lados esquerdo e direito.
  • Em tipos, indica o emparelhamento em uma tupla.
  • Usado em unidades de tipos de medida.
/ Operadores aritméticos

Unidades de Medida
  • Divide o lado esquerdo (numerador) pelo lado direito (denominador).
  • Usado em unidades de tipos de medida.
% Operadores aritméticos Calcula o restante inteiro.
** Operadores aritméticos Calcula a operação de exponencialização (x ** y significa x para o poder de y).

Operadores de comparação

A tabela a seguir descreve os operadores de comparação.

Símbolo ou operador Links Descrição
< Operadores aritméticos Calcula a operação menor que.
<> Operadores aritméticos Retorna true se o lado esquerdo não for igual ao lado direito; caso contrário, retornará false.
<= Operadores aritméticos Retorna true se o lado esquerdo for menor ou igual ao lado direito; caso contrário, retornará false.
= Operadores aritméticos Retorna true se o lado esquerdo for igual ao lado direito; caso contrário, retornará false.
> Operadores aritméticos Retorna true se o lado esquerdo for maior que o lado direito; caso contrário, retornará false.
>= Operadores aritméticos Retorna true se o lado esquerdo for maior ou igual ao lado direito; caso contrário, retornará false.

Operadores booleanos

A tabela a seguir descreve os símbolos de operadores aritméticos e boolianos.

Símbolo ou operador Links Descrição
&& Operadores Boolianos Calcula a operação AND booliana.
|| Operadores Boolianos Calcula a operação OR booliana.

Operadores bit a bit

A tabela a seguir descreve operadores bit a bit.

Símbolo ou operador Links Descrição
&&& operadores bit a bit Calcula a operação AND bit a bit.
<<< operadores bit a bit Desloca bits na quantidade do lado esquerdo para a esquerda pelo número de bits especificado no lado direito.
>>> operadores bit a bit Desloca bits na quantidade do lado esquerdo para a direita pelo número de locais especificados no lado direito.
^^^ operadores bit a bit Calcula a operação OR exclusiva bit a bit.
||| operadores bit a bit Calcula a operação OR bit a bit.
~~~ operadores bit a bit Calcula a operação NOT bit a bit.

Símbolos e operadores de função

A tabela a seguir descreve os operadores e símbolos relacionados às funções.

Símbolo ou operador Links Descrição
-> Funções Em expressões de função, separa o padrão de entrada da expressão de saída.
|> Funções Passa o resultado do lado esquerdo para a função no lado direito (operador de pipe para frente).
||> ( ||> )<'T1,'T2,'U> Function Passa a tupla de dois argumentos no lado esquerdo para a função no lado direito.
|||> ( |||> )<'T1,'T2,'T3,'U> Function Passa a tupla de três argumentos no lado esquerdo para a função no lado direito.
>> Funções Compõe duas funções (operador de composição de encaminhamento).
<< Funções Compõe duas funções em ordem inversa; o segundo é executado primeiro (operador de composição para trás).
<| Funções Passa o resultado da expressão no lado direito para a função no lado esquerdo (operador de pipe para trás).
<|| ( <|| )<' T1,'T2,'Função U> Passa a tupla de dois argumentos no lado direito para a função no lado esquerdo.
<||| ( <||| )<' T1,'T2,'T3,'U> Function Passa a tupla de três argumentos no lado direito para a função no lado esquerdo.

Digitar símbolos e operadores

A tabela a seguir descreve símbolos relacionados a anotações de tipo e testes de tipo.

Símbolo ou operador Links Descrição
-> Funções Em tipos de função, delimita argumentos e valores retornados, também gera um resultado em expressões de sequência.
: Funções Em uma anotação de tipo, separa um parâmetro ou nome de membro de seu tipo.
:> Conversões e conversões Converte um tipo em tipo mais alto na hierarquia.
:? Expressões de correspondência Retorna true se o valor corresponder ao tipo especificado (incluindo se for um subtipo); caso contrário, retornará false (operador de teste de tipo).
:?> Conversões e conversões Converte um tipo em um tipo inferior na hierarquia.
# Tipos flexíveis Quando usado com um tipo, indica um tipo flexível, que se refere a um tipo ou qualquer um de seus tipos derivados.
' Generalização Automática Indica um parâmetro de tipo genérico.
<...> Generalização Automática Delimita parâmetros de tipo.
^ Parâmetros de tipo resolvidos estaticamente

Cadeias de caracteres
  • Especifica parâmetros de tipo que devem ser resolvidos em tempo de compilação, não em tempo de execução.
  • Concatena cadeias de caracteres.
{} Classe ou registro Quando usado com a type palavra-chave, delimita uma classe ou registro. O tipo é uma classe quando os membros são declarados ou a class palavra-chave é usada. Caso contrário, é um registro.
{||} Registro anônimo Denota um registro anônimo

Símbolos usados em expressões de pesquisa e fatia de membro

A tabela a seguir descreve símbolos adicionais usados em expressões de pesquisa e fatia de membro.

Símbolo ou operador Links Descrição
. Membros Acessa um membro e separa nomes individuais em um nome totalmente qualificado.
[...] ou .[...] Matrizes

Propriedades indexadas

Expressões de fatia
Indexa em uma matriz, cadeia de caracteres ou coleção ou usa uma fatia de uma coleção.

Símbolos usados em tupla, lista, matriz, expressões de unidade e padrões

A tabela a seguir descreve símbolos relacionados a tuplas, listas, valores de unidade e matrizes.

Símbolo ou operador Links Descrição
( ) Tipo de unidade Representa o valor único do tipo de unidade.
, Tuplas Separa os elementos de uma tupla ou parâmetros de tipo.
:: Listas

Expressões de correspondência
  • Cria uma lista. O elemento no lado esquerdo é anexado à lista no lado direito.
  • Usado na correspondência de padrões para separar as partes de uma lista.
@ Listas Concatena duas listas.
[...] Listas Delimita os elementos de uma lista.
[|...|] Matrizes Delimita os elementos de uma matriz.

Símbolos usados em expressões imperativas

A tabela a seguir descreve símbolos adicionais usados em expressões.

Símbolo ou operador Links Descrição
<- Valores Atribui um valor a uma variável.
; Sintaxe detalhada

Separa expressões (usadas principalmente em sintaxe detalhada). Também separa elementos de uma lista ou campos de um registro.

Símbolos adicionais usados em sequências e expressões de computação

A tabela a seguir descreve símbolos adicionais usados em sequências e expressões de computação.

Símbolo ou operador Links Descrição
-> Sequências Produz uma expressão (em expressões de sequência); equivalente às do yield palavras-chave.
! Expressões de computação Após uma palavra-chave, indica uma versão modificada do comportamento da palavra-chave, conforme controlado por uma expressão de computação.

Símbolos adicionais usados em padrões de correspondência

A tabela a seguir descreve símbolos relacionados à correspondência de padrões.

Símbolo ou operador Links Descrição
-> Expressões de correspondência Usado em expressões de correspondência.
& Correspondência de padrões
  • Calcula o endereço de um valor mutável, para uso ao interoperar com outros idiomas.
  • Usado em padrões AND.
_ Expressões de correspondência

Genéricos
  • Indica um padrão curinga.
  • Especifica um parâmetro genérico anônimo.
| Expressões de correspondência Delimita casos de correspondência individuais, casos de união discriminados individuais e valores de enumeração.

Símbolos adicionais usados em declarações

A tabela a seguir descreve símbolos relacionados a declarações.

Símbolo ou operador Links Descrição
(|...|) Padrões ativos Delimita um nome de padrão ativo. Também chamado de clipes de banana.
? Parâmetros e argumentos Especifica um argumento opcional.
~~ Sobrecarga de operador Usado para declarar uma sobrecarga para o operador de negação unário.
~- Sobrecarga de operador Usado para declarar uma sobrecarga para o operador unário de subtração.
~+ Sobrecarga de operador Usado para declarar uma sobrecarga para o operador de adição unário.

Símbolos adicionais usados entre aspas

A tabela a seguir descreve símbolos relacionados às aspas de código.

Símbolo ou operador Links Descrição
<@...@> Aspas de código Delimita uma aspa de código tipada.
<@@...@@> Aspas de código Delimita uma aspa de código não tipada.
% Aspas de código Usado para associar expressões em aspas de código tipada.
%% Aspas de código Usado para associar expressões em aspas de código não tipados.

Operadores de pesquisa dinâmica

A tabela a seguir descreve símbolos adicionais usados em expressões de pesquisa dinâmicas. Eles geralmente não são usados na programação F# de rotina e nenhuma implementação desses operadores é fornecida na biblioteca principal do F#.

Símbolo ou operador Links Descrição
? Usado como um operador para chamadas de propriedade e método dinâmico.
? ... <- ... Usado como um operador para definir propriedades dinâmicas.

Operadores anuláveis em consultas

Operadores anuláveis são definidos para uso em Expressões de Consulta. A tabela a seguir mostra esses operadores.

Símbolo ou operador Links Descrição
%? Operadores anuláveis Calcula o restante inteiro, quando o lado direito é um tipo anulável.
*? Operadores anuláveis Multiplica os lados esquerdo e direito, quando o lado direito é um tipo anulável.
+? Operadores anuláveis Adiciona os lados esquerdo e direito, quando o lado direito é um tipo anulável.
-? Operadores anuláveis Subtrai o lado direito do lado esquerdo, quando o lado direito é um tipo anulável.
/? Operadores anuláveis Divide o lado esquerdo pelo lado direito, quando o lado direito é um tipo anulável.
<? Operadores anuláveis Calcula o menor que a operação, quando o lado direito é um tipo anulável.
<>? Operadores anuláveis Calcula a operação "não igual" quando o lado direito é um tipo anulável.
<=? Operadores anuláveis Calcula a operação "menor ou igual a" quando o lado direito é um tipo anulável.
=? Operadores anuláveis Calcula a operação "igual" quando o lado direito é um tipo anulável.
>? Operadores anuláveis Calcula a operação "maior que" quando o lado direito é um tipo anulável.
>=? Operadores anuláveis Calcula a operação "maior ou igual" quando o lado direito é um tipo anulável.
?>=, ?>, ?<=, ?<, ?=, , ?<>, ?+, , ?-, ?*, ?/ Operadores anuláveis Equivalente aos operadores correspondentes sem o ? prefixo, em que um tipo anulável está à esquerda.
>=?, >?, <=?, <?, =?, , <>?, +?, , -?, *?, /? Operadores anuláveis Equivalente aos operadores correspondentes sem o ? sufixo, em que um tipo anulável está à direita.
?>=?, ?>?, ?<=?, ?<?, ?=?, , ?<>?, ?+?, , ?-?, ?*?, ?/? Operadores anuláveis Equivalente aos operadores correspondentes sem os pontos de interrogação ao redor, em que ambos os lados são tipos anuláveis.

Operadores de célula de referência (preteridos)

A tabela a seguir descreve símbolos relacionados a células de referência. O uso desses operadores gera mensagens de consultoria a partir do F# 6. Para obter mais informações, consulte As mensagens de consultoria de operação de célula de referência.

Símbolo ou operador Links Descrição
! Células de referência Desreferencia uma célula de referência.
:= Células de referência Atribui um valor a uma célula de referência.

Precedência do operador

A tabela a seguir mostra a ordem de precedência de operadores e outras palavras-chave de expressão em F#, em ordem da precedência mais baixa à precedência mais alta. Também está listada a associatividade, se aplicável.

Operador Capacidade de associação
as Certo
when Certo
| (pipe) Esquerda
; Certo
let Nonassociative
function, fun, , matchtry Nonassociative
if Nonassociative
not Certo
-> Certo
:= Certo
, Nonassociative
or, || Esquerda
&, && Esquerda
:>, :?> Certo
< op, >op, =, |op, &op, , &$

(incluindo <<<, >>>, |||, ) &&&
Esquerda
^ Op

(incluindo ^^^)
Certo
:: Certo
:? Não associativo
- op, +op Aplica-se aos usos de infixo desses símbolos
* op, /op, %op Esquerda
** Op Certo
f x (aplicativo de funções)

(incluindo lazy x, assert x)
Esquerda
| (correspondência de padrão) Certo
operadores de prefixo (+op, -op, %, %%,& , &&op!, ~op) Esquerda
. Esquerda
f(x) Esquerda
f< Tipos> Esquerda

O F# dá suporte à sobrecarga de operador personalizado. Isso significa que você pode definir seus próprios operadores. Na tabela anterior, a operação pode ser qualquer sequência válida (possivelmente vazia) de caracteres de operador, internos ou definidos pelo usuário. Portanto, você pode usar essa tabela para determinar qual sequência de caracteres usar para um operador personalizado alcançar o nível de precedência desejado. Os caracteres principais . são ignorados quando o compilador determina a precedência.

Consulte também