A C#-ban a tuple egy olyan adatszerkezet, amely adatokat rendez, és két vagy több mezőt tartalmaz bármilyen típusból.
A tuple-t általában úgy hozzuk létre, hogy 2 vagy több, vesszővel elválasztott kifejezést zárójelek közé teszünk.
string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);
A tuple használható értékadási és inicializálási műveletekben, visszatérési értékként vagy metódusargumentumként.
A mezők a pont jelöléssel érhetők el. Alapértelmezés szerint az első mező az Item1, a második az Item2, stb. A nem alapértelmezett neveket alább tárgyaljuk.
// 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;
}
A Item1 és hasonló mezőnevek nem teszik olvashatóvá a kódot. Az alábbi kód 2 módot mutat be a tuple-ök mezőinek elnevezésére. Vegyük észre azt is, hogy az alábbi kódban a var használható tuple-ökkel, és a típus kikövetkeztethető. Ez ugyanúgy működik elnevezett és névtelen mezőkkel rendelkező tuple-ök esetén is.
// 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;
Ebben a feladatban telefonszámokat fogsz elemezni.
Két funkciót kell megvalósítanod.
A rutinoknak átadott telefonszámok garantáltan NNN-NNN-NNNN formátumúak, például 212-515-9876, és nem null értékűek.
Az elemzésnek 3 adatot kell visszaadnia:
Valósítsd meg a (statikus) PhoneNumber.Analyze() metódust, amely előállítja a telefonszám adatait.
PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")
Valósítsd meg a (statikus) PhoneNumber.IsFake() metódust, amely az 1. részfeladatban előállított telefonszám-adatok alapján megállapítja, hogy a telefonszám hamis-e.
PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.