Tipos en F#

En este tema se presentan los tipos que se usan en F#, cómo se les asigna un nombre y cómo se describen.

Resumen de los tipos de F#

Algunos tipos se consideran tipos primitivos, como el tipo booleano bool y los tipos enteros y de punto flotante de varios tamaños, que incluyen tipos para bytes y caracteres. Estos 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 de .NET y está aprendiendo F#, debe leer los temas dedicados a 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.

.NET Framework es el origen de tipos de objeto, tipos de interfaz, 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, denominadas abreviaturas de tipo, que son nombres alternativos para los tipos. Puede usar abreviaturas de tipo si este cambia en el futuro y quiere evitar cambiar el código que depende del tipo. También puede usar una abreviatura de tipo como nombre descriptivo de un tipo para facilitar la lectura y la comprensión del código.

F# proporciona tipos de colección útiles que se diseñaron teniendo en cuenta la programación funcional. Estos tipos de colección ayudan a escribir código que sea más funcional en estilo. Para obtener más información, consulte Tipos de colección de F#.

Sintaxis de los 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 estas formas sintácticas se usan en anotaciones de tipo, declaraciones de métodos abstractos, declaraciones de delegados, firmas y otras construcciones. Cada vez que declare una nueva construcción de programa en el intérprete, este imprime el nombre de la construcción y la sintaxis de su tipo. Esta sintaxis puede ser solo un identificador para un tipo definido por el usuario o un identificador integrado, como int o string; pero para tipos más complejos, la sintaxis es más compleja.

En la tabla siguiente se muestran aspectos de la sintaxis de los tipos de F#.

Tipo Sintaxis de tipos 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
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-parametergeneric-type-name

o

generic-type-name<type-parameter-list>
'a list

list<'a>

Dictionary<'key, 'value>
tipo construido (tipo genérico al que se ha proporcionado 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 que tiene un único parámetro parameter-type1 ->return-type Función que toma un objeto int y devuelve un objeto string que tiene el tipo int -> string.
tipo de función que tiene varios parámetros parameter-type1 ->parameter-type2 -> ... ->return-type Función que toma un objeto int y float y devuelve un objeto string que 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 delegado de function-type delegate of unit -> int
tipo flexible #type-name #System.Windows.Forms.Control

#seq<int>
Tema Descripción
Tipos primitivos Describe tipos simples integrados, como tipos enteros, el tipo booleano y tipos de caracteres.
Unit (Tipo) Describe el tipo unit, que tiene un valor y se indica mediante (); equivalente a void en C# y Nothing en Visual Basic.
Tuplas Describe el tipo de tupla, que consta de valores asociados de cualquier tipo agrupados en pares, triples, cuádruples, etc.
Opciones Describe el tipo de opción, que puede tener un valor o estar vacío.
Listas Describe las listas, que son series ordenadas e 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 discriminado, 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 se corresponde con 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 se corresponde con un tipo de valor de .NET. Normalmente, el tipo struct representa un pequeño agregado de datos.
Interfaces Describe los tipos de interfaz, que representan un conjunto de miembros que proporcionan cierta funcionalidad, pero no contienen datos. Un tipo de interfaz debe implementarse mediante 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.