Partilhar via


Tipos de F#

Este tópico descreve os tipos usados em F# e como os tipos de F# são nomeados e descritos.

Resumo dos tipos de F#

Alguns tipos são considerados tipos primitivos, como o tipo bool booleano e tipos integrais e de ponto flutuante de vários tamanhos, que incluem tipos para bytes e caracteres. Esses tipos são descritos em Tipos primitivos.

Outros tipos que são incorporados na linguagem incluem tuplas, listas, matrizes, sequências, registros e uniões discriminadas. Se você tem experiência com outras linguagens .NET e está aprendendo F#, você deve ler os tópicos para cada um desses tipos. Esses tipos específicos de F# suportam estilos de programação que são comuns a linguagens de programação funcionais. Muitos desses tipos têm módulos associados na biblioteca F# que suportam operações comuns nesses tipos.

O tipo de uma função inclui informações sobre os tipos de parâmetros e o tipo de retorno.

O .NET Framework é a origem de tipos de objeto, tipos de interface, tipos delegados e outros. Você pode definir seus próprios tipos de objeto da mesma forma que em qualquer outra linguagem .NET.

Além disso, o código F# pode definir aliases, que são abreviaturas de tipo nomeadas, que são nomes alternativos para tipos. Você pode usar abreviaturas de tipo quando o tipo pode mudar no futuro e você deseja evitar alterar o código que depende do tipo. Ou, você pode usar uma abreviação de tipo como um nome amigável para um tipo que pode tornar o código mais fácil de ler e entender.

F# fornece tipos de coleção úteis que são projetados com programação funcional em mente. O uso desses tipos de coleção ajuda você a escrever um código com estilo mais funcional. Para obter mais informações, consulte Tipos de coleção F#.

Sintaxe para tipos

No código F#, muitas vezes você tem que escrever os nomes dos tipos. Cada tipo tem uma forma sintática, e você usa essas formas sintáticas em anotações de tipo, declarações de método abstrato, declarações delegadas, assinaturas e outras construções. Sempre que você declara uma nova construção de programa no interpretador, o intérprete imprime o nome da construção e a sintaxe para seu tipo. Essa sintaxe pode ser apenas um identificador para um tipo definido pelo usuário ou um identificador interno, como for int ou string, mas para tipos mais complexos, a sintaxe é mais complexa.

A tabela a seguir mostra aspetos da sintaxe de tipo para tipos F#.

Type Sintaxe do tipo Exemplos
tipo primitivo tipo-nome int

float

string
tipo de agregado (classe, estrutura, união, registro, enum, e assim por diante) tipo-nome System.DateTime

Color
abreviatura do tipo tipo-abreviatura-nome bigint
Tipo totalmente qualificado namespaces.tipo-nome

ou

modules.type-name

ou

namespaces.modules.type-name
System.IO.StreamWriter
matriz tipo-nome[] ou

matriz de nome de tipo
int[]

array<int>

int array
matriz bidimensional tipo-nome[,] int[,]

float[,]
matriz tridimensional tipo-nome[,,] float[,,]
tuple tipo-nome1 * tipo-nome2 ... Por exemplo, (1,'b',3) tem tipo int * char * int
tipo genérico tipo-parâmetro genérico-tipo-nome

ou

genérico-tipo-nome-tipo-parâmetro-lista<>
'a list

list<'a>

Dictionary<'key, 'value>
tipo construído (um tipo genérico que tem um argumento de tipo específico fornecido) type-argument genérico-type-name

ou

genérico-tipo-nome-tipo-argumento-lista<>
int option

string list

int ref

option<int>

list<string>

ref<int>

Dictionary<int, string>
tipo de função que tem um único parâmetro parâmetro-tipo1 ->return-type Uma função que usa um int e retorna um string tem tipo int -> string
tipo de função que tem vários parâmetros parâmetro-tipo1 ->parâmetro-tipo2 -> ... ->return-type Uma função que usa um int e a float e retorna um string tem tipo int -> float -> string
Função de ordem superior como parâmetro (tipo de função) List.map tem tipo ('a -> 'b) -> 'a list -> 'b list
delegado delegar do tipo de função delegate of unit -> int
tipo flexível #tipo-nome #System.Windows.Forms.Control

#seq<int>
Tópico Description
Tipos primitivos Descreve tipos simples internos, como tipos integrais, o tipo booleano e tipos de caracteres.
Tipo de unidade Descreve o unit tipo, um tipo que tem um valor e que é indicado por (); equivalente a void em C# e Nothing no Visual Basic.
Tuplas Descreve o tipo de tupla, um tipo que consiste em valores associados de qualquer tipo agrupados em pares, triplos, quádruplos e assim por diante.
Opções Descreve o tipo de opção, um tipo que pode ter um valor ou estar vazio.
Listas Descreve listas, que são ordenadas, séries imutáveis de elementos todos do mesmo tipo.
Matrizes Descreve matrizes, que são conjuntos ordenados de elementos mutáveis do mesmo tipo que ocupam um bloco contíguo de memória e são de tamanho fixo.
Sequências Descreve o tipo de sequência, que representa uma série lógica de valores; Os valores individuais são calculados apenas quando necessário.
Registos Descreve o tipo de registro, uma pequena agregação de valores nomeados.
Sindicatos discriminados Descreve o tipo de união discriminada, um tipo cujos valores podem ser qualquer um de um conjunto de tipos possíveis.
Funções Descreve valores de função.
Classes Descreve o tipo de classe, um tipo de objeto que corresponde a um tipo de referência .NET. Os tipos de classe podem conter membros, propriedades, interfaces implementadas e um tipo base.
Estruturas Descreve o struct tipo, um tipo de objeto que corresponde a um tipo de valor .NET. O struct tipo geralmente representa um pequeno agregado de dados.
Interfaces Descreve os tipos de interface, que são tipos que representam um conjunto de membros que fornecem determinada funcionalidade, mas que não contêm dados. Um tipo de interface deve ser implementado por um tipo de objeto para ser útil.
Delegados Descreve o tipo de delegado, que representa uma função como um objeto.
Enumerações Descreve tipos de enumeração, cujos valores pertencem a um conjunto de valores nomeados.
Atributos Descreve atributos, que são usados para especificar metadados para outro tipo.
Tipos de exceção Descreve exceções, que especificam informações de erro.