Tipos F#
Este tópico descreve os tipos que são usados no F# e como os tipos F# são nomeados e descritos.
Resumo de tipos F#
Alguns tipos são considerados tipos primitivos, como o tipo booliano bool
e tipos de ponto flutuante e integral de vários tamanhos, que incluem tipos para bytes e caracteres. Esses tipos são descritos em Tipos Primitivos.
Outros tipos integrados à linguagem incluem tuplas, listas, matrizes, sequências, registros e uniões discriminadas. Se você tiver experiência com outras linguagens do .NET e estiver aprendendo F#, leia os tópicos de cada um desses tipos. Esses tipos específicos de F# dão suporte a estilos de programação comuns a linguagens de programação funcionais. Muitos desses tipos têm módulos associados na biblioteca F# que tem suporte a operações comuns nesses tipos.
O tipo de uma função inclui informações sobre os tipos de parâmetro e o tipo de retorno.
O .NET Framework é a origem de tipos de objeto, tipos de interface, tipos de delegados e outros. Você pode definir seus próprios tipos de objeto da mesma forma que pode em qualquer outra linguagem do .NET.
Além disso, o código F# pode definir aliases, que são abreviações de tipo nomeadas, que são nomes alternativos para tipos. Você pode usar abreviações de tipo quando o tipo pode ser alterado 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 reconhecer.
O F# fornece tipos de coleção úteis que são projetados com a programação funcional em mente. Usar esses tipos de coleção ajuda você a escrever um código mais funcional em estilo. Para obter mais informações, consulte Tipos de Coleção F#.
Sintaxe para tipos
No código F#, geralmente você precisa escrever os nomes dos tipos. Cada tipo tem um formulário sintático e você usa esses formulários sintáticos em anotações de tipo, declarações de método abstrato, declarações de delegado, assinaturas e outros constructos. Sempre que você declara um novo constructo de programa no interpretador, o interpretador imprime o nome do constructo 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 para int
ou string
, mas para tipos mais complexos, a sintaxe é mais complexa.
A tabela a seguir mostra aspectos da sintaxe de tipo para tipos F#.
Tipo | Sintaxe do tipo | Exemplos |
---|---|---|
tipo primitivo | type-name | int float string |
tipo de agregação (classe, estrutura, união, registro, enumeração e assim por diante) | type-name | System.DateTime Color |
abreviação de tipo | type-abbreviation-name | bigint |
tipo totalmente qualificado | namespaces.type-name ou modules.type-name ou namespaces.modules.type-name |
System.IO.StreamWriter |
array | type-name[] ou 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 exemplo, (1,'b',3) tem tipo int * char * int |
tipo genérico | type-parametergeneric-type-name ou generic-type-name<type-parameter-list> |
'a list list<'a> Dictionary<'key, 'value> |
tipo construído (um tipo genérico que tem um argumento de tipo específico fornecido) | type-argumentgeneric-type-name ou generic-type-name<type-argument-list> |
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 | parameter-type1 ->return-type | Uma função que usa um int e retorna um string que tem tipo int -> string |
tipo de função que tem vários parâmetros | parameter-type1 ->parameter-type2 -> ... ->return-type | Uma função que usa um int e um float e retorna um string que tem tipo int -> float -> string |
função de ordem superior como um parâmetro | (function-type) | List.map tem tipo ('a -> 'b) -> 'a list -> 'b list |
delegado | delegado do function-type | delegate of unit -> int |
tipo flexível | #type-name | #System.Windows.Forms.Control #seq<int> |
Tópicos Relacionados
Tópico | Descrição |
---|---|
Tipos primitivos | Descreve tipos simples internos, como tipos integrais, o tipo booliano e tipos de caracteres. |
Tipo unit | Descreve o tipo unit , 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 agrupado 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érie imutável 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 têm 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 somente conforme necessário. |
Registros | Descreve o tipo de registro, uma pequena agregação de valores nomeados. |
Uniões discriminadas | Descreve o tipo de união discriminado, 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 do .NET. Os tipos de classe podem conter membros, propriedades, interfaces implementadas e um tipo base. |
Estruturas | Descreve o tipo struct , um tipo de objeto que corresponde a um tipo de valor do .NET. O tipo struct geralmente representa uma pequena agregação 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. |
Representantes | Descreve o tipo de delegado, que representa uma função como um objeto. |
Enumerações | Descreve os tipos de enumeração, cujos valores pertencem a um conjunto de valores nomeados. |
Atributos | Descreve os atributos, que são usados para especificar metadados para outro tipo. |
Tipos de Exceção | Descreve exceções, que especificam informações de erro. |