Tipos en F#
En este tema se describen los tipos que se usan en F# y cómo se denominan y describen los tipos de F#.
Resumen de tipos de F#
Algunos tipos se consideran tipos primitivos, como el tipo booleano y los tipos enteros y de punto flotante de varios tamaños, que incluyen tipos bool para bytes y caracteres. Estos tipos se describen en Tipos primitivos.
Otros tipos integrados en el lenguaje incluyen tuplas, listas, matrices, secuencias, registros y uniones discriminadas. Si tiene experiencia con otros lenguajes .NET y está aprendiendo F#, debe leer los temas de cada uno de estos tipos. Estos tipos específicos de F# admiten estilos de programación que son comunes a los lenguajes de programación funcionales. Muchos de estos tipos tienen módulos asociados en la biblioteca de F# que admiten operaciones comunes en estos tipos.
El tipo de una función incluye información sobre los tipos de parámetro y el tipo de valor devuelto.
El .NET Framework es el origen de los tipos de objeto, los tipos de interfaz, los tipos delegados y otros. Puede definir sus propios tipos de objeto igual que en cualquier otro lenguaje .NET.
Además, el código de F# puede definir alias, que son abreviaturas de tipo con nombre, que son nombres alternativos para los tipos. Puede usar abreviaturas de tipo cuando el tipo pueda cambiar en el futuro y desea evitar cambiar el código que depende del tipo. O bien, puede usar una abreviatura de tipo como nombre descriptivo para un tipo que pueda facilitar la lectura y la información del código.
F# proporciona tipos de colección útiles diseñados pensando en la programación funcional. El uso de estos tipos de colección le ayuda a escribir código que sea más funcional en el estilo. Para obtener más información, vea Tipos de colección de F#.
Sintaxis para tipos
En el código de F#, a menudo tiene que escribir los nombres de los tipos. Cada tipo tiene una forma sintáctica y se usan estas formas sintácticas en anotaciones de tipo, declaraciones de método abstractos, declaraciones de delegado, firmas y otras construcciones. Cada vez que se declara una nueva construcción de programa en el intérprete, el intérprete imprime el nombre de la construcción y la sintaxis de su tipo. Esta sintaxis podría ser simplemente un identificador para un tipo definido por el usuario o un identificador integrado como para o , pero para tipos más complejos, la sintaxis int string es más compleja.
En la tabla siguiente se muestran aspectos de la sintaxis de tipos para los tipos de F#.
| Tipo | Sintaxis de tipos | Ejemplos |
|---|---|---|
| tipo primitivo | type-name | intfloatstring |
| tipo de agregado (clase, estructura, unión, registro, enumeración, y así sucesivamente) | type-name | System.DateTimeColor |
| abreviatura de tipo | type-abbreviation-name | bigint |
| tipo completo | namespaces.type-name o modules.type-name o namespaces.modules.type-name |
System.IO.StreamWriter |
| array | type-name[] o Matriz type-name |
int[]array<int>int array |
| Matriz bidimensional | type-name[,] | int[,]float[,] |
| Matriz tridimensional | type-name[,,] | float[,,] |
| tuple | type-name1 * type-name2 ... | Por ejemplo, (1,'b',3) tiene el tipo int * char * int |
| tipo genérico | type-parameter generic-type-name o generic-type-name < type-parameter-list> |
'a listlist<'a>Dictionary<'key, 'value> |
| tipo construido (un tipo genérico que tiene un argumento de tipo específico proporcionado) | type-argument generic-type-name o generic-type-name < type-argument-list> |
int optionstring listint refoption<int>list<string>ref<int>Dictionary<int, string> |
| Tipo de función que tiene un único parámetro | parameter-type1 - > return-type | Una función que toma y int devuelve un string tipo tiene int -> string |
| Tipo de función que tiene varios parámetros | parameter-type1 - > parameter-type2 - > ... - > return-type | Una función que toma y int y devuelve un tipo float string tiene int -> float -> string |
| función de orden superior como parámetro | (tipo de función) | List.map tiene el tipo ('a -> 'b) -> 'a list -> 'b list |
| delegado | delegado de tipo de función | delegate of unit -> int |
| tipo flexible | #type-name | #System.Windows.Forms.Control#seq<int> |
Temas relacionados
| Tema | Descripción |
|---|---|
| Tipos primitivos | Describe los tipos simples integrados, como los tipos enteros, el tipo booleano y los tipos de caracteres. |
| Unit (Tipo) | Describe el tipo , un tipo que tiene un valor y que indica (); equivalente a en C# y unit void en Nothing Visual Basic. |
| Tuplas | Describe el tipo de tupla, un tipo que consta de valores asociados de cualquier tipo agrupados en pares, triples, cuádros, y así sucesivamente. |
| Opciones | Describe el tipo de opción, un tipo que puede tener un valor o estar vacío. |
| Listas | Describe las listas, que están ordenadas, series inmutables de elementos del mismo tipo. |
| Matrices | Describe matrices, que son conjuntos ordenados de elementos mutables del mismo tipo que ocupan un bloque contiguo de memoria y tienen un tamaño fijo. |
| Secuencias | Describe el tipo de secuencia, que representa una serie lógica de valores; Los valores individuales solo se calculan según sea necesario. |
| Registros | Describe el tipo de registro, un pequeño agregado de valores con nombre. |
| Uniones discriminadas | Describe el tipo de unión discriminada, un tipo cuyos valores pueden ser cualquiera de un conjunto de tipos posibles. |
| Funciones | Describe los valores de función. |
| Clases | 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. |
| Structs | Describe el tipo struct , un tipo de objeto que corresponde a un tipo de valor de .NET. El struct tipo suele representar un pequeño agregado de datos. |
| Interfaces | Describe los tipos de interfaz, que son tipos que representan un conjunto de miembros que proporcionan cierta funcionalidad pero que no contienen datos. Un tipo de interfaz debe implementarlo un tipo de objeto para que sea útil. |
| Delegados | Describe el tipo de delegado, que representa una función como un objeto . |
| Enumeraciones | Describe los tipos de enumeración, cuyos valores pertenecen a un conjunto de valores con nombre. |
| Atributos | Describe los atributos, que se usan para especificar metadatos para otro tipo. |
| Tipos de excepción | Describe las excepciones, que especifican información de error. |