Compartir a través de


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.

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 bien

modules.type-name

-O bien-

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-parameter generic-type-name

-O bien-

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-argument generic-type-name

O bien

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

Tipos primitivos (F#)

Describe los tipos simples integrados, como los tipos enteros, el tipo booleano y los tipos de caracteres.

Tipo unit (F#)

Describe el tipo unit, que tiene un solo valor y se indica mediante (); equivale a void en C# y a Nothing en Visual Basic.

Tuplas (F#)

Describe el tipo de tupla, que se compone de valores asociados de cualquier tipo, agrupados en pares, tríos, cuartetos, etc.

Opciones (F#)

Describe el tipo de opción, que puede tener un valor o estar vacío.

Listas (F#)

Describe las listas, que son series inmutables y ordenadas de elementos del mismo tipo.

Matrices (F#)

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.

Secuencias (F#)

Describe el tipo de secuencia, que representa una serie lógica de valores; los valores individuales se calculan solo cuando son necesarios.

Registros (F#)

Describe el tipo de registro, que es un agregado pequeño de valores con nombre.

Uniones discriminadas (F#)

Describe el tipo de unión discriminada, cuyos valores pertenecen a un conjunto de tipos posibles.

Funciones (F#)

Describe los valores de función.

Clases (F#)

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.

Estructuras (F#)

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.

Interfaces (F#)

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.

Delegados (F#)

Describe el tipo de delegado, que representa una función como un objeto.

Enumeraciones (F#)

Describe los tipos de enumeración, cuyos valores pertenecen a un conjunto de valores con nombre.

Atributos (F#)

Describe los atributos, que se utilizan para especificar los metadatos de otro tipo.

Tipos de excepción (F#)

Describe las excepciones, que especifican información de error.