Tipos F#
Este tópico descreve os tipos que são 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 booleano bool e tipos de ponto flutuante e integrante de vários tamanhos, incluem tipos de caracteres e bytes. Esses tipos são descritos na Tipos primitivos (F#).
Outros tipos que são criados no idioma incluem tuplas, listas, matrizes, seqüências, registros e uniões de discriminated. Se você tiver experiência com os outros.NET idiomas e estão aprendendo F#, você deve ler os tópicos para cada um desses tipos. Links para mais informações sobre esses tipos são incluídos na Tópicos relacionados seção deste tópico. Essas F#-suportam para tipos específicos estilos de programação que são comuns a linguagens de programação funcionais. Muitos desses tipos associados módulos na biblioteca de F# operações comuns nesses tipos de suporte.
O tipo de uma função inclui informações sobre os tipos de parâmetro e tipo de retorno.
O .NET Framework é a fonte dos tipos de objeto, tipos de interface, tipos delegate e outros. Você pode definir seus próprios tipos de objeto, como em qualquer outro.NET language.
Além disso, F# o código pode definir aliases, denominados abreviações do tipo, que são nomes alternativos para tipos. Você pode usar as abreviações de tipo quando o tipo pode mudar no futuro e deseja evitar a alteração do código 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 compreender.
F# fornece tipos de coleção útil projetados com programação funcional em mente. Usando esses tipos de coleção ajuda a escrever código que é mais funcional no estilo. Para mais informações, consulte Tipos de coleção de F#.
Sintaxe para tipos
F# código, você freqüentemente precisa gravar os nomes de tipos. Cada tipo tem uma forma sintática e use essas formas sintáticas em anotações de tipo, declarações de método abstrato, declarações delegate, assinaturas e outras construções. Sempre que você declarar uma nova construção de programa o intérprete, o interpretador imprime o nome da construção e a sintaxe para o 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 os tipos mais complexos, a sintaxe é mais complexa.
A tabela a seguir mostra aspectos da sintaxe de tipo para tipos de F#.
Tipo |
Sintaxe de 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 |
Matriz |
type-name[] ou 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 exemplo, (1,'b',3) tem tipoint * char * int |
tipo genérico |
type-parameter generic-type-name ou generic-type-name<type-parameter-list> |
'a list list<'a> Dictionary<'key, 'value> |
construído tipo (um tipo genérico tem um argumento de tipo específico fornecido) |
type-argument generic-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 possui um único parâmetro |
parameter-type1-> return-type |
Uma função que leva um int e retorna um string tem tipoint -> string |
tipo de função tem vários parâmetros |
parameter-type1-> parameter-type2-> ... -> return-type |
Uma função que leva um int e um float e retorna um string tem tipoint -> float -> string |
função de ordem superior como um parâmetro |
(function-type) |
List.maptem tipo('a -> 'b) -> 'a list -> 'b list |
representante |
delegado defunction-type |
delegate of unit -> int |
tipo flexível |
#type-name |
#System.Windows.Forms.Control #seq<int> |
Tópicos relacionados
Tópico |
Descrição |
---|---|
Descreve os tipos simples internos como tipos integrais, do tipo Boolean e tipos de caracteres. |
|
Descreve o unit tipo, um tipo que tem um valor e que é indicado por (); equivalent to void in C# and Nothing in Visual Basic. |
|
Descreve o tipo de tupla, um tipo que consiste em valores associados de qualquer tipo agrupados em pares, triples, quadruples e assim por diante. |
|
Descreve o tipo de opção, um tipo que pode ter um valor ou estar vazio. |
|
Descreve listas que são uma série ordenada, imutável de elementos todos do mesmo tipo. |
|
Descreve as 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. |
|
Descreve o tipo de seqüência que representa uma seqüência lógica de valores; valores individuais são computados somente quando necessário. |
|
Descreve o tipo de registro, um pequeno agregado de valores nomeados. |
|
Descreve o tipo de união discriminado, um tipo cujos valores podem ser qualquer um de um conjunto de tipos possíveis. |
|
Descreve os valores de função. |
|
Descreve o tipo de classe, um tipo de objeto que corresponde a um.Tipo de referência NET. Tipos de classe podem conter membros, propriedades, interfaces implementadas e um tipo base. |
|
Descreve o struct tipo, um tipo de objeto que corresponde a um.Tipo do valor líquido. O struct tipo geralmente representa um pequeno agregado de dados. |
|
Descreve os tipos de interface, que são tipos que representam um conjunto de membros que fornecem certa funcionalidade mas que não contêm dados. Um tipo de interface deve ser implementado por um tipo de objeto para ser útil. |
|
Descreve o tipo de delegado, que representa uma função como um objeto. |
|
Descreve tipos de enumeração cujos valores pertencem a um conjunto de valores nomeados. |
|
Descreve os atributos que são usados para especificar metadados para outro tipo. |
|
Descreve exceções para especificam informações de erro. |