Compartilhar via


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

Tipos primitivos (F#)

Descreve os tipos simples internos como tipos integrais, do tipo Boolean e tipos de caracteres.

Tipo unit (F#)

Descreve o unit tipo, um tipo que tem um valor e que é indicado por (); equivalent to void in C# and Nothing in Visual Basic.

Tuplas (F#)

Descreve o tipo de tupla, um tipo que consiste em valores associados de qualquer tipo agrupados em pares, triples, quadruples e assim por diante.

Opções (F#)

Descreve o tipo de opção, um tipo que pode ter um valor ou estar vazio.

Listas (F#)

Descreve listas que são uma série ordenada, imutável de elementos todos do mesmo tipo.

Matrizes (F#)

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.

Sequências (F#)

Descreve o tipo de seqüência que representa uma seqüência lógica de valores; valores individuais são computados somente quando necessário.

Registros (F#)

Descreve o tipo de registro, um pequeno agregado de valores nomeados.

Uniões discriminadas (F#)

Descreve o tipo de união discriminado, um tipo cujos valores podem ser qualquer um de um conjunto de tipos possíveis.

Funções (F#)

Descreve os valores de função.

Classes (F#)

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.

Estruturas (F#)

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.

Interfaces (F#)

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.

Delegados (F#)

Descreve o tipo de delegado, que representa uma função como um objeto.

Enumerações (F#)

Descreve tipos de enumeração cujos valores pertencem a um conjunto de valores nomeados.

Atributos (F#)

Descreve os atributos que são usados para especificar metadados para outro tipo.

Tipos de exceção (F#)

Descreve exceções para especificam informações de erro.