Partilhar via


Símbolo e referência do 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 Ligações 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 identificadores

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

Símbolo ou operador Ligações Descrição
" Strings Delimita uma cadeia de caracteres de texto.
@" Strings Inicia uma cadeia de caracteres de texto literal, que pode incluir barras invertidas e outros caracteres.
""" Strings Delimita uma cadeia de texto com aspas triplas, que pode incluir barras invertidas, aspas duplas e outros caracteres.
$" Cordas 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 idioma.
\ Strings Escapa do próximo personagem; usado em literais de caracteres e strings.

Operadores aritméticos

A tabela a seguir descreve os operadores aritméticos.

Símbolo ou operador Ligações 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, 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 emparelhamento em uma tupla.
  • Utilizado em unidades de medida.
/ Operadores Aritméticos

Unidades de medida
  • Divide o lado esquerdo (numerador) pelo lado direito (denominador).
  • Utilizado em unidades de medida.
% Operadores Aritméticos Calcula o número inteiro restante.
** Operadores Aritméticos Calcula a operação de exponenciaçã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 Ligações Descrição
< Operadores Aritméticos Calcula a operação menos que.
<> Operadores Aritméticos Retorna true se o lado esquerdo não for igual ao lado direito, caso contrário, retorna false.
<= Operadores Aritméticos Retorna true se o lado esquerdo for menor ou igual ao lado direito, caso contrário, retorna false.
= Operadores Aritméticos Retorna true se o lado esquerdo for igual ao lado direito, caso contrário, retorna false.
> Operadores Aritméticos Retorna true se o lado esquerdo for maior que o direito, caso contrário, retorna false.
>= Operadores Aritméticos Retorna true se o lado esquerdo for maior ou igual ao lado direito, caso contrário, retorna false.

Operadores booleanos

A tabela a seguir descreve os símbolos dos operadores aritméticos e booleanos.

Símbolo ou operador Ligações Descrição
&& Operadores Booleanos Calcula a operação Boolean AND.
|| Operadores Booleanos Calcula a operação OR booleana.

Operadores Bitwise

A tabela a seguir descreve os operadores bitwise.

Símbolo ou operador Ligações Descrição
&&& Operadores de Manipulação de Bits Calcula a operação bit a bit AND.
<<< Operadores de Manipulação de Bits Desloca bits na quantidade do lado esquerdo para a esquerda pelo número de bits especificado no lado direito.
>>> Operadores de Manipulação de Bits Desloca bits na quantidade do lado esquerdo para a direita pelo número de lugares especificados no lado direito.
^^^ Operadores de Manipulação de Bits Calcula a operação OR exclusiva bitwise.
||| Operadores de Manipulação de Bits Calcula a operação OR bit a bit.
~~~ Operadores de Manipulação de Bits Calcula a operação bit a bit NOT.

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 Ligações 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 do lado direito (operador de tubo para a frente).
||> ( ||> Função< )'T1,'T2,'U> Passa a tupla de dois argumentos no lado esquerdo para a função no lado direito.
|||> ( |||> )<'T1,'T2,'T3,'U> Função Passa a tupla de três argumentos do lado esquerdo para a função do lado direito.
>> Funções Compõe duas funções (operador de composição para frente).
<< 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 tubo para trás).
<|| <( || )<» Função T1,'T2,'U> Passa a tupla de dois argumentos do lado direito para a função do lado esquerdo.
<||| <( ||| )<» Função T1,'T2,'T3,'U> Passa a tupla de três argumentos do lado direito para a função do lado esquerdo.

Símbolos de tipo e operadores

A tabela a seguir descreve símbolos relacionados à anotação de tipo e testes de tipo.

Símbolo ou operador Ligações Descrição
-> Funções Em tipos de função, delimita argumentos e valores de retorno, também produz 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ão e Transformações Converte um tipo em tipo mais alto na hierarquia.
:? Expressões de correspondência Retorna true se o valor corresponde ao tipo especificado (incluindo se for um subtipo); caso contrário, retorna false (operador de teste de tipo).
:?> Conversão e Transformações Converte um tipo em um tipo que é 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

Strings
  • 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 Registo Quando usado com a palavra-chave, delimita type uma classe ou registro. O tipo é uma classe quando os membros são declarados ou a class palavra-chave é usada. Caso contrário, é um recorde.
{||} Registo anónimo Indica um registo anónimo

Símbolos usados na pesquisa de membros e expressões de fatia

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

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

Propriedades indexadas

Expressões de fatia
Indexa em uma matriz, cadeia de caracteres ou coleção, ou tira 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 unitários e matrizes.

Símbolo ou operador Ligações 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 do lado esquerdo é anexado à lista do 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.
[|...|] Arrays Delimita os elementos de uma matriz.

Símbolos utilizados em expressões imperativas

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

Símbolo ou operador Ligações 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 utilizados em sequências e expressões computacionais

A tabela a seguir descreve símbolos adicionais usados em Sequências e Expressões de Computação.

Símbolo ou operador Ligações Descrição
-> Sequências Produz uma expressão (em expressões sequenciais); equivalente às do yield palavras-chave.
! Expressões computacionais Depois de uma palavra-chave, indica uma versão modificada do comportamento da palavra-chave como controlada por uma expressão computacional.

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 Ligações 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 utilizados nas declarações

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

Símbolo ou operador Ligações Descrição
(|...|) Padrões Ativos Delimita um nome de padrão ativo. Também chamados de grampos 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ária.
~- Sobrecarga de Operador Usado para declarar uma sobrecarga para o operador unário menos.
~+ Sobrecarga de Operador Usado para declarar uma sobrecarga para o operador unary plus.

Símbolos adicionais utilizados nas citações

A tabela a seguir descreve símbolos relacionados a cotações de código.

Símbolo ou operador Ligações Descrição
<@...@> Cotações de código Delimita uma cotação de código digitada.
<@@...@@> Cotações de código Delimita uma cotação de código não tipada.
% Cotações de código Usado para emendar expressões em citações de código digitadas.
%% Cotações de código Usado para emendar expressões em citações de código não tipadas.

Operadores de pesquisa dinâmica

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

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

Operadores anuláveis em consultas

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

Símbolo ou operador Ligações Descrição
%? Operadores anuláveis Calcula o número inteiro restante, 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 a operação menos que, 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 que ou igual" quando o lado direito é um tipo anulável.
?>=, ?>, , ?<=, ?<, ?<>?=, ?+, ?-?*,?/ Operadores anuláveis Equivalente aos operadores correspondentes sem o ? prefix, onde um tipo anulável está à esquerda.
>=?, >?, , <=?, <?, <>?=?, +?, -?*?,/? Operadores anuláveis Equivalente aos operadores correspondentes sem o ? sufixo, onde um tipo anulável está à direita.
?>=?, ?>?, , ?<=?, ?<?, ?<>??=?, ?+?, ?-??*?,?/? Operadores anuláveis Equivalente aos operadores correspondentes sem os pontos de interrogação circundantes, onde ambos os lados são tipos anuláveis.

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

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

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

Precedência dos operadores

A tabela a seguir mostra a ordem de precedência dos operadores e outras palavras-chave de expressão em F#, na ordem da menor precedência para a maior precedência. Também está listada a associatividade, se aplicável.

Operador Associatividade
as Certo
when Certo
| (tubo) Esquerda
; Certo
let Não associativo
function, fun, match, try Não associativo
if Não associativo
not Certo
-> Certo
:= Certo
, Não associativo
or, || Esquerda
&, && Esquerda
:>, :?> Certo
< op, >op, =, |op, op, && ,$

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

(incluindo ^^^)
Certo
:: Certo
:? Não associativo
- OP, +OP Aplica-se a usos infixos desses símbolos
* op, /op, %op Esquerda
** PO Certo
f x (aplicação da função)

(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# suporta sobrecarga de operador personalizado. Isso significa que você pode definir seus próprios operadores. Na tabela anterior, op pode ser qualquer sequência válida (possivelmente vazia) de caracteres do operador, seja interna ou definida pelo usuário. Assim, você pode usar essa tabela para determinar qual sequência de caracteres usar para um operador personalizado atingir o nível desejado de precedência. Os caracteres principais . são ignorados quando o compilador determina a precedência.

Ver também