Em C#, um tuplo é uma estrutura de dados que organiza dados e contém dois ou mais campos de qualquer tipo.
Normalmente, cria-se um tuplo colocando duas ou mais expressões separadas por vírgulas, entre parênteses.
string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);
Um tuplo pode ser usado em operações de atribuição e inicialização, como valor devolvido ou como argumento de um método.
Os campos são extraídos com a sintaxe de ponto. Por predefinição, o primeiro campo é Item1, o segundo Item2, etc. Os nomes não predefinidos são abordados abaixo.
// 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;
}
Os nomes de campo Item1, etc. não contribuem para um código legível. O código abaixo mostra duas formas de dar nome aos campos dos tuplos. Repara também, no código abaixo, que var pode ser usado com tuplos e que o tipo é inferido. Isto funciona igualmente bem para tuplos com campos com nome e sem nome.
// 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;
Neste exercício vais analisar números de telefone.
Pedem-te para implementares 2 funcionalidades.
Os números de telefone que são passados às rotinas estão garantidamente no formato NNN-NNN-NNNN, por exemplo 212-515-9876, e não são nulos.
A tua análise deve devolver 3 dados:
Implementa o método (estático) PhoneNumber.Analyze() para produzir a informação do número de telefone.
PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")
Implementa o método (estático) PhoneNumber.IsFake() para detetar se o número de telefone é falso, usando a informação do número de telefone produzida na tarefa 1.
PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.