En C#, un tuple est une structure de données qui organise des données et qui contient au moins deux champs de n'importe quel type.
On crée généralement un tuple en plaçant deux expressions ou plus, séparées par des virgules, entre parenthèses.
string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);
Un tuple peut servir dans les opérations d'affectation et d'initialisation, comme valeur de retour ou comme argument de méthode.
On accède aux champs avec la syntaxe point. Par défaut, le premier champ est Item1, le deuxième Item2, etc. Les noms autres que ceux par défaut sont abordés plus bas.
// initialization
(int, int, int) vertices = (90, 45, 45);
// assignment
vertices = (60, 60, 60);
// return value
(bool, int) GetSameOrBigger(int num1, int num2)
{
return (num1 == num2, num1 > num2 ? num1 : num2);
}
// method argument
int Add((int, int) operands)
{
return operands.Item1 + operands.Item2;
}
Des noms de champs comme Item1 ne rendent pas le code très lisible. Le code ci-dessous montre deux façons de nommer les champs d'un tuple. Remarque aussi, dans ce code, que var peut s'utiliser avec les tuples et que le type est alors inféré. Cela fonctionne aussi bien pour les tuples dont les champs sont nommés que pour ceux dont les champs ne le sont pas.
// name items in declaration
(bool success, string message) results = (true, "well done!");
bool mySuccess = results.success;
string myMessage = results.message;
// name items in creating expression
var results2 = (success: true, message: "well done!");
bool mySuccess2 = results2.success;
string myMessage2 = results2.message;
Dans cet exercice, tu vas analyser des numéros de téléphone.
Tu dois implémenter 2 fonctionnalités.
Les numéros de téléphone transmis aux routines sont garantis être de la forme NNN-NNN-NNNN, par exemple 212-515-9876, et ne jamais être nuls.
Ton analyse doit renvoyer 3 informations :
Implémente la méthode (statique) PhoneNumber.Analyze() pour produire les informations sur le numéro de téléphone.
PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")
Implémente la méthode (statique) PhoneNumber.IsFake() pour détecter si le numéro de téléphone est factice, en utilisant les informations produites dans la tâche 1.
PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.