Referencia de símbolos y operadores

En este artículo se incluyen tablas con la descripción de los símbolos y operadores que se utilizan en el lenguaje F#, además de una breve descripción de cada uno. Algunos símbolos y operadores tienen dos o más entradas cuando se usan en varios roles.

Símbolos de comentario, directiva del compilador y atributo

En la tabla siguiente se describen los símbolos relacionados con los comentarios, las directivas del compilador y los atributos.

Símbolo u operador Vínculos Descripción
(*...*) Delimita un comentario que podría abarcar varias líneas.
// Indica el principio de una sola línea de comentario.
/// Documentación de XML Indica un comentario XML.
# Directivas de compilador Prefija una directiva de compilador o preprocesador.
[<...>] Atributos Delimita un atributo.

Símbolos de cadena e identificador

En la tabla siguiente se describen los símbolos relacionados con las cadenas.

Símbolo u operador Vínculos Descripción
" Cadenas Delimita una cadena de texto.
@" Cadenas Inicia una cadena de texto literal, que puede incluir barras diagonales inversas y otros caracteres.
""" Cadenas Delimita una cadena de texto entre comillas triples, que puede incluir barras diagonales inversas, comillas dobles y otros caracteres.
$" Cadenas interpoladas Inicia una cadena interpolada.
' Literales Delimita un literal de carácter único.
``...`` Delimita un identificador que de otro modo no sería un identificador válido, como una palabra clave de lenguaje.
\ Cadenas Produce el escape del carácter siguiente; se utiliza en los literales de carácter y de cadena.

Operadores aritméticos

En la tabla siguiente se describen los operadores aritméticos.

Símbolo u operador Vínculos Descripción
+ Operadores aritméticos
  • Si se utiliza como un operador binario, suma los lados izquierdo y derecho.
  • Cuando se utiliza como un operador unario, indica una cantidad positiva. (Formalmente, genera el mismo valor sin modificar el signo).
- Operadores aritméticos
  • Si se utiliza como un operador binario, resta el lado derecho del lado izquierdo.
  • Si se utiliza como un operador unario, realiza una operación de negación.
* Operadores aritméticos

Tuplas

Unidades de medida
  • Cuando se utiliza como un operador binario, multiplica los lados izquierdo y derecho.
  • En los tipos, indica el emparejamiento en una tupla.
  • Se utiliza en unidades de medida de tipos.
/ Operadores aritméticos

Unidades de medida
  • Divide el lado izquierdo (numerador) entre el lado derecho (denominador).
  • Se utiliza en unidades de medida de tipos.
% Operadores aritméticos Calcula el resto entero.
** Operadores aritméticos Calcula la operación de exponenciación (x ** y significa x elevado a la potencia de y).

Operadores de comparación

En la tabla siguiente se describen los operadores de comparación.

Símbolo u operador Vínculos Descripción
< Operadores aritméticos Calcula la operación “menor que”.
<> Operadores aritméticos Devuelve true si el lado izquierdo no es igual que el lado derecho; de lo contrario, devuelve false.
<= Operadores aritméticos Devuelve true si el lado izquierdo es menor o igual que el lado derecho; de lo contrario, devuelve false.
= Operadores aritméticos Devuelve true si el lado izquierdo es igual que el lado derecho; de lo contrario, devuelve false.
> Operadores aritméticos Devuelve true si el lado izquierdo es mayor que el lado derecho; de lo contrario, devuelve false.
>= Operadores aritméticos Devuelve true si el lado derecho es mayor o igual que el lado izquierdo; de lo contrario, devuelve false.

Operadores booleanos

En la tabla siguiente se describen los símbolos de los operadores aritméticos y booleanos.

Símbolo u operador Vínculos Descripción
&& Operadores booleanos Calcula la operación AND booleana.
|| Operadores booleanos Calcula la operación OR booleana.

Operadores bit a bit

En la tabla siguiente se describen los operadores bit a bit.

Símbolo u operador Vínculos Descripción
&&& Operadores bit a bit Calcula la operación AND bit a bit.
<<< Operadores bit a bit Desplaza hacia la izquierda los bits de la cantidad del lado izquierdo, y lo hace en el número de bits especificado en el lado derecho.
>>> Operadores bit a bit Desplaza hacia la derecha los bits de la cantidad del lado izquierdo, y lo hace en el número de posiciones especificado en el lado derecho.
^^^ Operadores bit a bit Calcula la operación OR exclusiva bit a bit.
||| Operadores bit a bit Calcula la operación OR bit a bit.
~~~ Operadores bit a bit Calcula la operación NOT bit a bit.

Símbolos y operadores de función

En la tabla siguiente se describen los operadores y símbolos relacionados con las funciones.

Símbolo u operador Vínculos Descripción
-> Funciones En las expresiones de función, se separa el patrón de entrada de la expresión de salida.
|> Funciones Pasa el resultado del lado izquierdo a la función del lado derecho (operador de canalización hacia delante).
||> ( ||> )<'T1,'T2,'U> Función Pasa la tupla de dos argumentos del lado izquierdo a la función del lado derecho.
|||> ( |||> )<'T1,'T2,'T3,'U> Función Pasa la tupla de tres argumentos del lado izquierdo a la función del lado derecho.
>> Funciones Compone dos funciones (operador de composición hacia delante).
<< Funciones Compone dos funciones en orden inverso; la segunda se ejecuta primero (operador de composición hacia atrás).
<| Funciones Pasa el resultado de la expresión de la derecha a la función de la izquierda (operador de canalización hacia atrás).
<|| ( <|| )<'T1,'T2,'U> Función Pasa la tupla de dos argumentos del lado derecho a la función del lado izquierdo.
<||| ( <||| )<'T1,'T2,'T3,'U> Función Pasa la tupla de tres argumentos del lado derecho a la función del lado izquierdo.

Símbolos y operadores de tipo

En la tabla siguiente se describen los símbolos relacionados con la anotación de tipos y las pruebas de tipos.

Símbolo u operador Vínculos Descripción
-> Funciones En los tipos de función, delimita argumentos y valores devueltos. Además, produce un resultado en expresiones de secuencia.
: Funciones En una anotación de tipo, separa un parámetro o nombre de miembro de su tipo.
:> Conversiones Convierte un tipo en otro que está más arriba en la jerarquía.
:? Expresiones de coincidencia Devuelve true si el valor coincide con el tipo especificado (incluso si se trata de un subtipo); de lo contrario, devuelve false (operador de prueba de tipo).
:?> Conversiones Convierte un tipo en otro que está por debajo en la jerarquía.
# Tipos flexibles Cuando se usa con un tipo, indica un tipo flexible, que hace referencia a un tipo o a cualquiera de sus tipos derivados.
' Generalización automática Indica un parámetro de tipo genérico.
<...> Generalización automática Delimita los parámetros de tipo.
^ Parámetros de tipo resueltos estáticamente

Cadenas
  • Especifica los parámetros de tipo que deben resolverse en tiempo de compilación, no en tiempo de ejecución.
  • Concatena cadenas.

Símbolos usados en expresiones de sector y de búsqueda de miembros

En la tabla siguiente se describen los símbolos adicionales usados en las expresiones de segmentación y búsqueda de miembros.

Símbolo u operador Vínculos Descripción
. Miembros Tiene acceso a un miembro y separa los nombres individuales de un nombre completo.
[...] o .[...] Matrices

Propiedades indizadas

Expresiones de segmentación
Indexa en una matriz, cadena o colección, o toma un segmento de una colección.

Símbolos usados en expresiones y patrones de tupla, lista, matriz, unidad

En la tabla siguiente se describen los símbolos relacionados con las tuplas, las listas, los valores de unidad y las matrices.

Símbolo u operador Vínculos Descripción
( ) Unit (Tipo) Representa el valor único del tipo de unidad.
, Tuplas Separa los elementos de una tupla o los parámetros de tipo.
:: Listas

Expresiones de coincidencia
  • Crea una lista. El elemento del lado izquierdo antecede a la lista en el lado derecho.
  • Se utiliza en la coincidencia de patrones para separar las partes de una lista.
@ Listas Concatena dos listas.
[...] Listas Delimita los elementos de una lista.
[|...|] Matrices Delimita los elementos de una matriz.

Símbolos usados en expresiones imperativas

En la tabla siguiente se describen los símbolos adicionales usados en las expresiones.

Símbolo u operador Vínculos Descripción
<- Valores Asigna un valor a una variable.
; Sintaxis detallada

Separa expresiones (se usa principalmente en sintaxis detallada). Además, separa los elementos de una lista o campos de un registro.

Símbolos adicionales usados en secuencias y expresiones de cálculo

En la tabla siguiente se describen los símbolos adicionales usados en secuencias y expresiones de cálculo.

Símbolo u operador Vínculos Descripción
-> Secuencias Genera una expresión (en expresiones de secuencia); es equivalente a las palabras clave do yield.
! Expresiones de cálculo Después de una palabra clave, indica una versión modificada del comportamiento de esta, controlado por una expresión de cálculo.

Símbolos adicionales usados en patrones de coincidencia

En la tabla siguiente se describen los símbolos relacionados con la coincidencia de patrones.

Símbolo u operador Vínculos Descripción
-> Expresiones de coincidencia Se usa en expresiones de coincidencia.
& Expresiones de coincidencia
  • Calcula la dirección de un valor mutable para usarlo al interoperar con otros lenguajes.
  • Se utiliza en los patrones AND.
_ Expresiones de coincidencia

Genéricos
  • Indica un patrón de carácter comodín.
  • Especifica un parámetro genérico anónimo.
| Expresiones de coincidencia Delimita casos de coincidencia individuales, casos de unión discriminada individuales y valores de la enumeración.

Símbolos adicionales usados en declaraciones

En la tabla siguiente se describen los símbolos relacionados con las declaraciones.

Símbolo u operador Vínculos Descripción
(|...|) Patrones activos Delimita el nombre de un modelo activo. También se denominan delimitadores de modelo activo.
? Parámetros y argumentos Especifica un argumento opcional.
~~ Sobrecarga de operadores Se utiliza para declarar una sobrecarga para el operador unario de negación.
~- Sobrecarga de operadores Se utiliza para declarar una sobrecarga para el operador unario menos.
~+ Sobrecarga de operadores Se utiliza para declarar una sobrecarga para el operador unario más.

Símbolos adicionales usados en expresiones de código delimitadas

En la tabla siguiente se describen los símbolos relacionados con las expresiones de código delimitadas.

Símbolo u operador Vínculos Descripción
<@...@> Expresiones de código delimitadas Delimita una expresión de código con tipos.
<@@...@@> Expresiones de código delimitadas Delimita una expresión de código sin tipos.
% Expresiones de código delimitadas Se utiliza para ensamblar expresiones en expresiones de código delimitadas con tipo.
%% Expresiones de código delimitadas Se utiliza para ensamblar expresiones en expresiones de código delimitadas sin tipo.

Operadores de búsqueda dinámica

En la tabla siguiente se describen los símbolos adicionales usados en expresiones de búsqueda dinámica. Por lo general, no se usan en la programación rutinaria de F#, y no se proporcionan implementaciones de estos operadores en la biblioteca principal de F#.

Símbolo u operador Vínculos Descripción
? Se usa como operador para método dinámico y llamadas de propiedad.
? ... <- ... Se usa como operador para establecer propiedades dinámicas.

Operadores que aceptan valores NULL en las consultas

Los operadores que admiten valores NULL se definen para su uso en expresiones de consulta. En la tabla siguiente se incluyen estos operadores.

Símbolo u operador Vínculos Descripción
%? Operadores que aceptan valores NULL Calcula el resto entero, cuando el lado derecho es un tipo que acepta valores NULL.
*? Operadores que aceptan valores NULL Multiplica los lados izquierdo y derecho, si el lado derecho es un tipo que acepta valores NULL.
+? Operadores que aceptan valores NULL Suma los lados izquierdo y derecho, si el lado derecho es un tipo que acepta valores NULL.
-? Operadores que aceptan valores NULL Resta el lado derecho del lado izquierdo, si el lado derecho es un tipo que acepta valores NULL.
/? Operadores que aceptan valores NULL Divide el lado izquierdo entre el lado derecho, si el lado derecho es un tipo que acepta valores NULL.
<? Operadores que aceptan valores NULL Calcula la operación “menor que”, si el lado derecho es un tipo que acepta valores NULL.
<>? Operadores que aceptan valores NULL Calcula la operación “no es igual a” cuando el lado derecho es un tipo que acepta valores NULL.
<=? Operadores que aceptan valores NULL Calcula la operación “menor o igual que” cuando el lado derecho es un tipo que acepta valores NULL.
=? Operadores que aceptan valores NULL Calcula la operación “es igual a” cuando el lado derecho es un tipo que acepta valores NULL.
>? Operadores que aceptan valores NULL Calcula la operación "mayor que" cuando el lado derecho es un tipo que acepta valores NULL.
>=? Operadores que aceptan valores NULL Calcula la operación “mayor o igual que” cuando el lado derecho es un tipo que acepta valores NULL.
?>=, ?>, ?<=, ?<, ?=, ?<>, ?+, ?-, ?*, ?/ Operadores que aceptan valores NULL Equivalente a los operadores correspondientes sin el sufijo ?; en la izquierda hay un tipo que acepta valores NULL.
>=?, >?, <=?, <?, =?, <>?, +?, -?, *?, /? Operadores que aceptan valores NULL Equivalente a los operadores correspondientes sin el sufijo ?; en la derecha hay un tipo que acepta valores NULL.
?>=?, ?>?, ?<=?, ?<?, ?=?, ?<>?, ?+?, ?-?, ?*?, ?/? Operadores que aceptan valores NULL Equivalente a los operadores correspondientes sin los signos de interrogación circundantes, donde ambos lados son tipos que aceptan valores NULL.

Operadores de celda de referencia (en desuso)

En la tabla siguiente se describen los símbolos relacionados con las celdas de referencia. El uso de estos operadores genera mensajes de aviso a partir de F# 6. Para obtener más información, consulte Referencia de mensajes de aviso de operaciones de celda.

Símbolo u operador Vínculos Descripción
! Celdas de referencia Desreferencia una celda de referencia.
:= Celdas de referencia Asigna un valor a una celda de referencia.

Precedencia de operadores

En la siguiente tabla se muestra, de menor a mayor, el orden de precedencia de operadores y otras palabras clave de expresiones de F#. También se indica la asociatividad, si corresponde.

Operador asociatividad
as Right
when Right
| (canalización) Left
; Right
let No asociativo
function, fun, match, try No asociativo
if No asociativo
not Right
-> Right
:= Right
, No asociativo
or, || Left
&, && Left
:>, :?> Right
<op, >op, =, |op, &op, &, $

(incluyendo <<<, >>>, |||, &&&)
Left
^op

(incluyendo ^^^)
Right
:: Right
:? No asociativo
-op, +op Se aplica a los usos de infijo de estos símbolos
*op, /op, %op Left
**op Right
f x (aplicación de función)

(incluido lazy x, assert x)
Left
| (coincidencia de patrones) Right
operadores de prefijo (+op, -op, %, %%, &, &&, !op, ~op) Left
. Left
f(x) Left
f<tipos> Left

F# es compatible con la sobrecarga de operadores personalizados. Esto significa que puede definir sus propios operadores. En la tabla anterior, op puede ser cualquier secuencia válida (posiblemente vacía) de caracteres de operador, ya sean integrados o definidos por el usuario. Por lo tanto, puede utilizar esta tabla para determinar qué secuencia de caracteres se utilizará para que un operador personalizado logre alcanzar el nivel deseado de precedencia. Los caracteres . iniciales se omiten cuando el compilador determina la precedencia.

Vea también