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 |
|
- |
Operadores aritméticos |
|
* |
Operadores aritméticos Tuplas Unidades de medida |
|
/ |
Operadores aritméticos Unidades de medida |
|
% |
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 |
|
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 |
|
@ |
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 |
|
_ |
Expresiones de coincidencia Genéricos |
|
| |
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.