Exporter (0) Imprimer
Développer tout
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Tuples (F#)

Un tuple est un regroupement de valeurs sans nom, mais ordonnées, de types éventuellement différents.

( element , ... , element ) 

Chaque element de la syntaxe précédente peut être une expression quelconque.

Parmi les exemples de tuples, citons les paires, les triples, et ainsi de suite, du même type ou de types différents. Quelques exemples sont illustrés dans le code suivant.


// 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) 


Vous pouvez utiliser des critères spéciaux pour accéder aux éléments de tuple et leur assigner des noms, comme indiqué dans le code suivant.


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


Vous pouvez utiliser des modèles de tuple dans des liaisons let, comme suit.

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

Cela entraîne simultanément la liaison des valeurs a et b. Si vous avez seulement besoin d'un élément du tuple, le caractère générique (trait de soulignement) peut être utilisé pour éviter de créer un nom pour une variable dont vous n'avez pas besoin.

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

Les fonctions fst et snd retournent, respectivement, le premier et le second élément d'un tuple.


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


Aucune fonction intégrée ne retourne le troisième élément d'un triple, mais vous pouvez facilement en écrire une, comme suit.


let third (_, _, c) = c


En général, il est recommandé d'utiliser des critères spéciaux pour accéder aux éléments individuels d'un tuple.

Les tuples constituent un moyen pratique de retourner plusieurs valeurs à partir d'une fonction, comme indiqué dans l'exemple suivant. Cet exemple exécute une division d'entier et retourne le résultat arrondi de l'opération comme premier membre d'une paire de tuples, et le reste comme deuxième membre de la paire.


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


Les tuples peuvent également être utilisés comme arguments de fonction lorsque vous voulez éviter la curryfication implicite d'arguments de fonction impliquée par la syntaxe de fonction standard.


let sumNoCurry (a, b) = a + b


La syntaxe habituelle pour la définition de la fonction let sum a b = a + b vous permet de définir une fonction qui est l'application partielle du premier argument de la fonction, comme indiqué dans le code suivant.


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


L'utilisation d'un tuple comme paramètre désactive la curryfication. Pour plus d'informations, consultez « Application partielle d'arguments » dans Fonctions (F#).

Lorsque vous écrivez le nom d'un type qui est un tuple, vous utilisez le symbole * pour séparer des éléments. Pour un tuple qui comprend un int, un float et une string, par exemple (10, 10.0, "ten"), le type est écrit comme suit.

int * float * string

Si vous utilisez uniquement des tuples F# et ne les exposez pas à d'autres langages, et si vous ne ciblez pas une version du .NET Framework antérieure à la version 4, vous pouvez ignorer cette section.

Les tuples sont compilés en objets de l'un des divers types génériques, tous appelés Tuple, qui sont surchargés sur l'arité (nombre de paramètres de type). Les types de tuple s'affichent sous cette forme lorsque vous les consultez à partir d'un autre langage, tel que C# ou Visual Basic, ou lorsque vous utilisez un outil qui n'est pas compatible avec les constructions F#. Les types Tuple ont été introduits dans .NET Framework 4. Si vous ciblez une version antérieure du .NET Framework, le compilateur utilise les versions de System.Tuple de la version 2.0 de la bibliothèque principale F#. Les types de cette bibliothèque sont utilisés uniquement pour les applications qui ciblent les versions 2.0, 3.0 et 3.5 du .NET Framework. Le transfert de type est utilisé pour assurer la compatibilité binaire entre les composants F# .NET Framework 2.0 et .NET Framework 4.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft. Tous droits réservés.