Compartilhar via


Tuplas (F#)

A tupla é um agrupamento de valores sem nome mas ordenados, possivelmente de diferentes tipos.

( element , ... , element ) 

Comentários

Cada element na sintaxe anterior pode ser qualquer expressão.

Exemplos

Pares, triples e assim por diante, dos tipos iguais ou diferentes são exemplos de tuplas. Alguns exemplos são ilustrados no código a seguir.

// Tuple of two integers.
( 1, 2 ) 

// Triple of strings.
( "one", "two", "three" ) 

// Tuple of unknown types.
( a, b ) 

// Tuple that has mixed types.
( "one", 1, 2.0 ) 

// Tuple of integer expressions.
( a + 1, b + 1) 

Obtendo valores individuais

Você pode usar a correspondência de padrões para acessar e atribuir nomes para elementos de tupla, conforme mostrado no código a seguir.

let print tuple1 =
   match tuple1 with
    | (a, b) -> printfn "Pair %A %A" a b

Você pode usar padrões de tupla em let as ligações da seguinte maneira.

let (a, b) = (1, 2)

Isso liga valores a e b ao mesmo tempo. Se você precisar de apenas um elemento da tupla, o caractere curinga (sublinhado) pode ser usado para evitar a criação de um novo nome para uma variável que você não precisa.

let (a, _) = (1, 2)

As funções fst e snd retornar o primeiro e segundo elementos de uma coleção de itens, respectivamente.

let c = fst (1, 2)
let d = snd (1, 2)

Não há nenhuma função interna que retorna o terceiro elemento de um triplo, mas você pode facilmente escrever um da seguinte maneira.

let third (_, _, c) = c

Geralmente, é melhor usar a correspondência de padrões para acessar os elementos de coleção de itens individuais.

Usando tuplas

Tuplas fornecem uma maneira conveniente de vários valores de retorno de uma função, como mostrado no exemplo a seguir. Este exemplo executa a divisão de inteiros e retorna o resultado arredondado da operação como membro de um par de tupla primeiro e o restante como um segundo membro do par.

let divRem a b = 
   let x = a / b
   let y = a % b
   (x, y)

Tuplas também podem ser usadas como argumentos de função quando você deseja evitar currying implícita de argumentos de função implícita a sintaxe da função usual.

let sumNoCurry (a, b) = a + b

A sintaxe usual para definição da função let sum a b = a + b permite que você defina uma função que é o aplicativo parcial do primeiro argumento da função, conforme mostrado no código a seguir.

let addTen = sum 10
let result = addTen 95  
// Result is 105.

Usando uma coleção de itens como o parâmetro desativa currying. Para obter mais informações, consulte "Aplicativo parcial de argumentos" em Funções (F#).

Nomes de tipos de tupla

Quando você escreve o nome de um tipo que é uma tupla, se você usa o * símbolo para separar elementos. Para uma tupla que consiste em um int, um floate um string, como (10, 10.0, "ten"), o tipo seria escrito da seguinte maneira.

int * float * string

Formato compilado de tuplas

Se você estiver usando apenas tuplas de F# e não expô-los para outros idiomas, e se não estiver visando uma versão do.NET Framework precedido da versão 4, você pode ignorar esta seção.

Tuplas são compiladas em objetos de um dos vários tipos de genéricos, todos os Tuple, que estão sobrecarregados na aridade ou número de parâmetros. Tipos de tupla são exibidos neste formulário quando você visualizá-los de outro idioma, como C# ou Visual Basic, ou quando você estiver usando uma ferramenta que não está ciente das construções de F#. O Tuple tipos foram introduzidos no.NET Framework 4. Se estiver visando uma versão anterior do.NET Framework, o compilador usa as versões do System.Tuple da versão 2.0 da biblioteca do núcleo F#. Os tipos nessa biblioteca são usados somente para aplicativos que se destinam a 2.0, 3.0 e 3.5 versões do.NET Framework. Encaminhamento de tipo é usado para garantir a compatibilidade binária entre.NET Framework 2.0 e.NET Framework 4 F# componentes.

Consulte também

Outros recursos

Referência da linguagem F#

Tipos F#