In C#, una tupla è una struttura dati che organizza i dati e contiene due o più campi di qualsiasi tipo.
Di solito una tupla si crea inserendo 2 o più espressioni separate da virgole all'interno di una coppia di parentesi tonde (()).
string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);
Una tupla può essere usata in operazioni di assegnazione e inizializzazione, come valore restituito o come argomento di un metodo.
I campi si estraggono usando la sintassi con il punto. Per impostazione predefinita, il primo campo è Item1, il secondo Item2, e così via. I nomi non predefiniti sono trattati più avanti.
// 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;
}
I nomi dei campi come Item1 non rendono il codice leggibile. Il codice qui sotto mostra 2 modi per dare un nome ai campi delle tuple. Nota anche, nel codice qui sotto, che var può essere usato con le tuple e il tipo viene inferito. Questo funziona altrettanto bene con tuple che hanno campi con nome e campi senza 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;
In questo esercizio analizzerai numeri di telefono.
Ti viene chiesto di implementare 2 funzionalità.
I numeri di telefono passati alle routine sono garantiti nel formato NNN-NNN-NNNN, ad esempio 212-515-9876, e non nulli.
La tua analisi dovrebbe restituire 3 informazioni:
Implementa il metodo (statico) PhoneNumber.Analyze() per produrre le informazioni sul numero di telefono.
PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")
Implementa il metodo (statico) PhoneNumber.IsFake() per rilevare se il numero di telefono è fasullo utilizzando le informazioni sul numero di telefono prodotte nell'attività 1.
PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.