Referência de símbolo e operador

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

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

A tabela que se segue descreve símbolos relacionados com comentários, diretivas de compilador e atributos.

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

Símbolos de corda e identificador

A tabela que se segue descreve símbolos relacionados com cordas.

Símbolo ou operador Ligações Description
" Cadeias Delimita uma corda de texto.
@" Cadeias Inicia uma cadeia de texto verbatim, que pode incluir backslashes e outros caracteres.
""" Cadeias Delimits uma cadeia de texto triplamente citada, que pode incluir backslashes, marcas duplas de aspas e outros caracteres.
$" Cadeias Interpoladas Começa uma corda interpolada.
' Literais Delimita um carácter único literal.
``...`` Delimita um identificador que de outra forma não seria um identificador legal, como uma palavra-chave linguística.
\ Cadeias Escapa ao próximo personagem; usado em caracteres e cordas literais.

Operadores aritméticos

A tabela a seguir descreve os operadores aritméticos.

Símbolo ou operador Ligações Description
+ Operadores Aritméticos
  • Quando utilizado como operador binário, adiciona os lados esquerdo e direito.
  • Quando utilizado como operador nãoário, indica uma quantidade positiva. (Formalmente, produz o mesmo valor com o sinal inalterado.)
- Operadores Aritméticos
  • Quando utilizado como operador binário, subtrai o lado direito do lado esquerdo.
  • Quando utilizado como operador nãoário, executa uma operação de negação.
* Operadores Aritméticos

Tuplas

Unidades de Medida
  • Quando utilizado como operador binário, multiplica os lados esquerdo e direito.
  • Em tipos, indica emparelhamento em tuple.
  • 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 resto do inteiro.
** Operadores Aritméticos Calcula a operação de exponenciação (x ** y meios 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 Description
< Operadores Aritméticos Calcula o menos que a operação.
<> Operadores Aritméticos Retorna true se o lado esquerdo não for igual ao lado direito; caso contrário, retorna falso.
<= Operadores Aritméticos Volta true se o lado esquerdo for inferior 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 do que o lado direito; caso contrário, retorna false.
>= Operadores Aritméticos Volta true se o lado esquerdo for maior ou igual ao lado direito; caso contrário, retorna false.

Operadores booleanos

A tabela que se segue descreve os símbolos dos operadores aritméticos e booleanos.

Símbolo ou operador Ligações Description
&& Operadores Boolean Calcula a operação Boolean E.
|| Operadores Boolean Calcula a operação Boolean OR.

Operadores bit-a-bit

A tabela a seguir descreve os operadores pouco sensatos.

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

Símbolos e operadores de função

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

Símbolo ou operador Ligações Description
-> Funções Nas 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 (acionador de tubos para a frente).
||> ( ||> )<'T1,'T2,'U> Função Passa a tuple de dois argumentos do lado esquerdo para a função do lado direito.
|||> ( |||> )<'T1,'T2,'T3,'u> Função Passa o tuple 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 dianteira).
<< 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 do lado direito para a função do lado esquerdo (acionador de tubos para trás).
<|| ( <|| )<' T1,'T2,'U> Função Passa o tuple de dois argumentos do lado direito para a função do lado esquerdo.
<||| ( <||| )<' T1,'T2,'T3,'U> Função Passa o tuple de três argumentos do lado direito para a função do lado esquerdo.

Símbolos e operadores de tipo

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

Símbolo ou operador Ligações Description
-> Funções Nos tipos de funções, delimita os argumentos e os valores de retorno, também produz um resultado em expressões de sequência.
: Funções Numa anotação tipo, separa um parâmetro ou nome de membro do seu tipo.
:> Fundição e Conversões Converte um tipo para tipo que é maior na hierarquia.
:? Expressões de correspondência Devoluções true se o valor corresponder ao tipo especificado (incluindo se for um subtipo); caso contrário, devoluções false (operador de teste de tipo).
:?> Fundição e Conversões Converte um tipo para um tipo mais baixo na hierarquia.
# Tipos Flexíveis Quando utilizado com um tipo, indica um tipo flexível, que se refere a um tipo ou a qualquer um dos seus tipos derivados.
' Generalização Automática Indica um parâmetro genérico do tipo.
<...> Generalização Automática Delimits tipo parâmetros.
^ Parâmetros de tipo resolvidos estáticamente

Cadeias
  • Especifica parâmetros de tipo que devem ser resolvidos no momento da compilação, e não no tempo de execução.
  • Cordas concatenates.
{} Classe ou Record Quando usado com a type palavra-chave, delimita uma classe ou registo. O tipo é uma classe quando os membros são declarados ou a class palavra-chave é usada. Caso contrário, é um recorde.
{||} Registo anónimo Denota um registo anónimo

Símbolos usados na procura de membros e expressões de fatias

A tabela seguinte descreve símbolos adicionais usados na procura de membros e em expressões de fatias.

Símbolo ou operador Ligações Description
. Membros Acede a um membro e separa nomes individuais num nome totalmente qualificado.
[...] ou .[...] Matrizes

Propriedades Indexadas

Expressões de fatias
Indexa-se a uma matriz, string ou coleção, ou leva uma fatia de uma coleção.

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

A tabela que se segue descreve símbolos relacionados com tuples, listas, valores unitários e matrizes.

Símbolo ou operador Ligações Description
( ) Tipo de Unidade Representa o valor único do tipo de unidade.
, Tuplas Separa os elementos de um tuple, ou parâmetros de tipo.
:: Listas

Expressões de correspondência
  • Cria uma lista. O elemento do lado esquerdo é preparado para a lista do lado direito.
  • Usado em padrão que combina para separar as partes de uma lista.
@ Listas Concatenates duas listas.
[...] Listas Delimita os elementos de uma lista.
[|...|] Matrizes Delimite os elementos de uma matriz.

Símbolos usados em expressões imperativas

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

Símbolo ou operador Ligações Description
<- Valores Atribui um valor a uma variável.
; Sintaxe verbose

Separa expressões (usadas principalmente na sintaxe verbose). Também separa elementos de uma lista ou campos de um registo.

Símbolos adicionais utilizados em sequências e expressões computacional

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

Símbolo ou operador Ligações Description
-> Sequências Produz uma expressão (em expressões de sequência); equivalente às do yield palavras-chave.
! Expressões computacional Após uma palavra-chave, indica uma versão modificada do comportamento da palavra-chave controlada 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 com a correspondência de padrões.

Símbolo ou operador Ligações Description
-> Expressões de correspondência Usado em expressões de correspondência.
& Expressões de correspondência
  • Calcula o endereço de um valor mutável, para utilização ao interoperar com outras línguas.
  • Usado em padrões E.
_ Expressões de correspondência

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

Símbolos adicionais utilizados em declarações

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

Símbolo ou operador Ligações Description
(|...|) Padrões ativos Delimita um nome de padrão ativo. Também chamados clips de banana.
? Parâmetros e Argumentos Especifica um argumento opcional.
~~ Sobrecarga do operador Usado para declarar uma sobrecarga para o operador de negação nãoário.
~- Sobrecarga do operador Usado para declarar uma sobrecarga para o operador unary menos.
~+ Sobrecarga do operador Usado para declarar uma sobrecarga para o operador unary plus.

Símbolos adicionais utilizados nas cotações

A tabela seguinte descreve símbolos relacionados com as cotações de código.

Símbolo ou operador Ligações Description
<@...@> Cotações de Código Delimita uma citação de código dactilografada.
<@@...@@> Cotações de Código Delimita uma citação de código não estampada.
% Cotações de Código Utilizado para a splicing expressões em citações de código dactilografada.
%% Cotações de Código Usado para juntar expressões em citações de código não estalificadas.

Operadores dinâmicos de procuração

A tabela seguinte descreve símbolos adicionais usados em expressões dinâmicas de procuração. Não são geralmente utilizados na programação de rotina F# e não são fornecidas implementações destes operadores na biblioteca central F.

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

Operadores nulos em consultas

Os operadores nulos são definidos para utilização em Expressões de Consulta. A tabela a seguir mostra estes operadores.

Símbolo ou operador Ligações Description
%? Operadores anulados Calcula o resto inteiro, quando o lado direito é um tipo anulado.
*? Operadores anulados Multiplica os lados esquerdo e direito, quando o lado direito é um tipo anulado.
+? Operadores anulados Adiciona os lados esquerdo e direito, quando o lado direito é um tipo anulado.
-? Operadores anulados Subtrai o lado direito do lado esquerdo, quando o lado direito é um tipo anulado.
/? Operadores anulados Divide o lado esquerdo pelo lado direito, quando o lado direito é um tipo anulado.
<? Operadores anulados Calcula o menos que funciona, quando o lado direito é um tipo anulado.
<>? Operadores anulados Calcula a operação "não igual" quando o lado direito é um tipo anulado.
<=? Operadores anulados Calcula a operação "menos ou igual" quando o lado direito é um tipo anulado.
=? Operadores anulados Calcula a operação "igual" quando o lado direito é um tipo anulado.
>? Operadores anulados Calcula a operação "maior do que" quando o lado direito é um tipo anulado.
>=? Operadores anulados Calcula a operação "maior ou igual" quando o lado direito é um tipo anulado.
?>=, ?>, ?<=, ?<, ?=, ?<>, ?+, ?-, ?*, ?/ Operadores anulados Equivalente aos operadores correspondentes sem o ? prefixo, onde um tipo anulado é à esquerda.
>=?, >?, <=?, <?, =?, <>?, +?, -?, *?, /? Operadores anulados Equivalente aos operadores correspondentes sem o ? sufixo, onde um tipo anulado está à direita.
?>=?, ?>?, ?<=?, ?<?, ?=?, ?<>?, ?+?, ?-?, ?*?, ?/? Operadores anulados Equivalente aos operadores correspondentes sem os pontos de interrogação circundantes, em que ambas as partes são tipos nulos.

Operadores de células de referência (precotados)

A tabela que se segue descreve símbolos relacionados com as células de referência. A utilização destes operadores gera mensagens de aviso a partir de F# 6. Para obter mais informações, consulte as mensagens de aviso de funcionamento do telemóvel de referência.

Símbolo ou operador Ligações Description
! Células de referência Dereferências uma célula de referência.
:= Células de referência Atribui um valor a uma célula de referência.

Precedência de operadores

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

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

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

(incluindo ^^^)
Direita
:: Direita
:? Não é associativo
-op, +op Aplica-se à utilização infixo destes símbolos
*op, /op, %op Esquerda
**op Direita
f x (aplicação de função)

(incluindo lazy x, assert x
Esquerda
| (correspondência de padrões) Direita
operadores de prefixos (+op, -op, %%%, , &, &&!op, ~op) Esquerda
. Esquerda
f(x) Esquerda
f<tipos> Esquerda

F# suporta sobrecarga personalizada do operador. Isto significa que pode definir os seus próprios operadores. Na tabela anterior, a op pode ser qualquer sequência válida (possivelmente vazia) de caracteres do operador, quer incorporados quer definidos pelo utilizador. Assim, pode utilizar esta tabela para determinar que sequência de caracteres usar para um operador personalizado para atingir o nível de precedência desejado. Os caracteres principais . são ignorados quando o compilador determina a precedência.

Ver também