Tipos en F#
En este tema se explican los tipos que se usan en F# y cómo se les designa y describe.
Resumen de tipos que se usan en F#
Algunos tipos se consideran tipos primitivos, como el tipo booleano bool, y los tipos enteros y de punto flotante de diversos tamaños, que incluyen tipos para bytes y caracteres.Estos tipos se describen en Tipos primitivos (F#).
Otros tipos integrados en el lenguaje son las tuplas, las listas, las matrices, las secuencias, los registros y las uniones discriminadas.Si tiene experiencia con otros lenguajes .NET y está aprendiendo el lenguaje F#, lea los temas correspondientes a cada uno de estos tipos.La sección Temas relacionados de este tema incluye vínculos donde encontrará más información sobre estos tipos.Estos tipos específicos de F# admiten estilos de programación que son comunes a los lenguajes de programación funcional.Muchos de estos tipos tienen módulos asociados en la biblioteca de F# que proporcionan operaciones comunes con estos tipos.
El tipo de una función incluye información sobre los tipos de los parámetros y el tipo del valor devuelto.
.NET Framework es el origen de los tipos de objeto, tipos de interfaz, tipos de delegado, etc.Al igual que con cualquier otro lenguaje .NET, puede definir sus propios tipos de objetos.
Además, F# permite definir alias, denominados abreviaturas de tipo, que son nombres alternativos de los tipos.Se pueden usar abreviaturas de tipo si existe la posibilidad de que el tipo cambie en el futuro y se desea evitar cambiar el código que depende del tipo.O bien, la abreviatura de tipo puede usarse como un nombre de tipo descriptivo que facilita la lectura y la comprensión del código.
F# proporciona tipos de colección útiles que están diseñados con la programación funcional en mente.Uso de estos tipos de colección le ayuda a escribir código que es más funcional en el estilo.Para obtener más información, vea Tipos de colección F#.
Sintaxis de los tipos
En código F#, a menudo hay que escribir los nombres de los tipos.Cada tipo tiene un formato sintáctico y estos formatos sintácticos se usan en las anotaciones de tipo, declaraciones de métodos abstractos, declaraciones de delegados, signaturas y otras construcciones.Cuando se declara una nueva construcción de programa en el intérprete, este imprime en pantalla el nombre de la construcción y la sintaxis de su tipo.Esta sintaxis puede ser simplemente un identificador de un tipo definido por el usuario o un identificador integrado de tipos como int o string; sin embargo, para los tipos más complejos, la sintaxis es más compleja.
En la siguiente tabla, se muestran diversos aspectos de la sintaxis de los tipos en F#.
Tipo |
Sintaxis del tipo |
Ejemplos |
---|---|---|
tipo primitivo |
type-name |
int float string |
tipo agregado (clase, estructura, unión, registro, enumeración, etc.) |
type-name |
System.DateTime Color |
abreviatura de tipo |
type-abbreviation-name |
bigint |
nombre completo de tipo |
namespaces.type-name o modules.type-name o namespaces.modules.type-name |
System.IO.StreamWriter |
Matriz |
type-name[] o Matriz type-name |
int[] array<int> int array |
matriz bidimensional |
type-name[,] |
int[,] float[,] |
matriz tridimensional |
type-name[,,] |
float[,,] |
tupla |
type-name1 * type-name2 ... |
Por ejemplo, el tipo de (1,'b',3) es int * char * int |
tipo genérico |
type-parametergeneric-type-name o generic-type-name<type-parameter-list> |
'a list list<'a> Dictionary<'key, 'value> |
tipo construido (tipo genérico que tiene un argumento de tipo específico) |
type-argumentgeneric-type-name o generic-type-name<type-argument-list> |
int option string list int ref option<int> list<string> ref<int> Dictionary<int, string> |
tipo de función con un solo parámetro |
parameter-type1 -> return-type |
Una función que toma un valor de tipo int y devuelve un tipo string tiene el tipo int -> string. |
tipo de función con varios parámetros |
parameter-type1 -> parameter-type2 -> ...-> return-type |
Una función que recibe un valor de tipo int y un valor de tipo float, y devuelve un valor de tipo string, tiene el tipo int -> float -> string |
función de orden superior como parámetro |
(function-type) |
List.map tiene el tipo ('a -> 'b) -> 'a list -> 'b list |
delegado |
delegate of function-type |
delegate of unit -> int |
tipo flexible |
#type-name |
#System.Windows.Forms.Control #seq<int> |
Temas relacionados
Tema |
Descripción |
---|---|
Describe los tipos simples integrados, como los tipos enteros, el tipo booleano y los tipos de caracteres. |
|
Describe el tipo unit, que tiene un solo valor y se indica mediante (); equivale a void en C# y a Nothing en Visual Basic. |
|
Describe el tipo de tupla, que se compone de valores asociados de cualquier tipo, agrupados en pares, tríos, cuartetos, etc. |
|
Describe el tipo de opción, que puede tener un valor o estar vacío. |
|
Describe las listas, que son series inmutables y ordenadas de elementos del mismo tipo. |
|
Describe las matrices, que son conjuntos ordenados de elementos mutables del mismo tipo que ocupan un bloque de memoria contiguo y tienen un tamaño fijo. |
|
Describe el tipo de secuencia, que representa una serie lógica de valores; los valores individuales se calculan solo cuando son necesarios. |
|
Describe el tipo de registro, que es un agregado pequeño de valores con nombre. |
|
Describe el tipo de unión discriminada, cuyos valores pertenecen a un conjunto de tipos posibles. |
|
Describe los valores de función. |
|
Describe el tipo de clase, un tipo de objeto que corresponde a un tipo de referencia de .NET.Los tipos de clase pueden contener miembros, propiedades, interfaces implementadas y un tipo base. |
|
Describe el tipo struct, un tipo de objeto que corresponde a un tipo de valor de .NET.Normalmente, el tipo struct representa un agregado de datos de tamaño reducido. |
|
Describe los tipos de interfaz, que representan un conjunto de miembros que proporcionan cierta funcionalidad pero que no contienen datos.Para que un tipo de interfaz sea útil, debe ser implementado por un tipo de objeto. |
|
Describe el tipo de delegado, que representa una función como un objeto. |
|
Describe los tipos de enumeración, cuyos valores pertenecen a un conjunto de valores con nombre. |
|
Describe los atributos, que se utilizan para especificar los metadatos de otro tipo. |
|
Describe las excepciones, que especifican información de error. |