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ópicos Relacionados
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. |