Partilhar 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 de 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 os padrões de tupla em let ligações como segue:

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

Isso vincula os 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 os elementos de uma tupla, 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 como segue.

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 e retorna o resultado arredondado da operação como membro de um par de tupla primeiro e o restante como um membro de segundo do par.

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

Tuplas 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 definir a 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, como mostra o código a seguir.

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

Usando uma tupla como o parâmetro desativa currying. Para obter mais informações, consulte "Parcial dos argumentos de aplicativo" in Funções (F#).

Nomes de tipos de tupla

Ao escrever o nome de um tipo que é uma tupla, se você usar 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 como segue:

int * float * string

Forma compilada de tuplas

Se você estiver usando apenas o 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 de tipo. Tipos de tupla aparecem neste formulário quando você visualizá-los de outro idioma, como, por exemplo, 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 o direcionamento de uma versão anterior do.NET Framework, o compilador usa as versões do System.Tuple da versão 2.0 da biblioteca de núcleo F#. Os tipos nessa biblioteca são usados somente para aplicativos que visam o 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 de linguagem do F#

Tipos de F#