Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 28269|Răspunde: 1

[Sursă] Utilizarea tuplelor în Java

[Copiază linkul]
Postat pe 31.08.2021 11:22:41 | | | |
Tuplele au o semnificație specială în domeniul calculatoarelor, acest nume poate părea puțin necunoscut, iar în scrierea codului practic nu există scenarii de aplicare, însă, surprinzător, tuple-urile sunt strâns legate de programare, unii studenți poate nu știu că un alt nume academic pentru "înregistrări" în bazele de date relaționale este "tuple", o înregistrare este o tuple, un tabel este o relație, înregistrările sunt compuse din tabele, tuple-urile generează relații, acesta este conceptul de bază al bazelor de date relaționale.

Tuplele sunt o parte inseparabilă a unei baze de date relaționale, dar nu sunt atât de indispensabile în programare. Unele limbaje de programare au propria sintaxă de tuple, precum python, F#, haskell, scala etc., în timp ce altele sunt mai populare, dar nu au sintaxă de tuple, cum ar fi Java, JavaScript, C++, C# etc.

Tuple-urile nu sunt elemente indispensabile de programare, precum array-urile și obiectele, dar utilizarea lor poate fi foarte convenabilă pentru scrierea codului, mai ales când o funcție trebuie să returneze mai multe valori. În acest caz, practica obișnuită este definirea unui obiect, setarea valorii pe care funcția trebuie să o returneze ca atribut al obiectului, apoi setarea tipului de valoare returnată a funcției la tipul obiectului. Sau poți face ca această funcție să returneze o structură de date mapată în care există datele specifice. Totuși, ambele abordări au defectele lor, iar prima metodă este fiabilă, dar codul este neobișnuit de încărcat. Cerințele în sine sunt foarte simple, atâta timp cât funcția returnează mai multe valori, dar această metodă necesită definirea unui tip dinainte, apoi instanțiarea, apoi setarea proprietăților instanței și, în final, returnarea, ceea ce este prea ineficient. Deși a doua metodă este rapidă, dar nu suficient de sigură, în interiorul funcției poți ști ce tip de valoare este stocată în hartă, dar în afara funcției, doar să știi că valoarea de returnare a acestei funcții este o hartă, adică ce valori sunt stocate în hartă, ce tip nu este cunoscut, în proiectele de dezvoltare cu mai multe persoane. Acest dezavantaj este deosebit de evident, din păcate această practică fiind soluția preferată în unele limbaje tipate dinamic, ceea ce este și unul dintre motivele fundamentale pentru care limbajele tipate dinamic sunt criticate pentru securitatea și lizibilitatea slabe. Prin urmare, cea mai bună soluție pentru acest tip de problemă este utilizarea tuple-urilor.

În limbile în care sintaxa însăși suportă tuple-uri, tuplele sunt reprezentate prin paranteze, cum ar fi (int, bool, string) este un tip tripl, iar valoarea sa poate fi (1, adevărat, "abc"). Trebuie menționat că fiecare tip de tuple este unic, (int, bool), (bool, int), (string, double) sunt toate binare, dar sunt tuple-uri diferite, dacă iei un anumit tuple aici ca valoare de returnare a funcției, deși nu este la fel de bună ca prima soluție folosind tipuri personalizate menționate anterior în ceea ce privește lizibilitatea și securitatea, este mult mai bună decât a doua soluție folosind map, cel puțin folosind tuple-uri poți ști câte valori va returna funcția, Ce tip de valoare sunt aceste valori și avantajul că este simplu și rapid să programezi o a doua schemă folosind map.

Din fericire, aceste limbaje de programare suportă acum generice, iar implementarea tuple-urilor neintegrate a devenit extrem de simplă, dar, până la urmă, este un element sintaxic non-limbaj integrat și cu siguranță nu este la fel de convenabil de folosit ca tuple-urile native.

Următoarea introduce o bibliotecă de tuple-uri Java de la terți, numită Javatuples, cu propria pagină oficială și sute de stele pe github, care aproape că joacă o poziție de monopol în domeniul tuple-urilor Java.

Javatuple-urile definesc un tuple cu o lungime maximă de 10, dar cred că numărul de elemente dintr-un 10-tuple este deja prea mare și practic nu există nicio lizibilitate. Clasele de tuple sunt definite astfel:

Unitate<A> (1 element)

Pereche<A,B> (2 elemente)

Trilet<A, B, C> (3 elemente)

Cvartet<A,B,C,D> (4 elemente)

Cvintet<A,B,C,D,E> (5 elemente)

Sextet<A,B,C,D,E,F> (6 elemente)

Septet<A,B,C,D,E,F,G> (7 elemente)

Octet<A,B,C,D,E,F,G,H> (8 elemente)

Ennead<A,B,C,D,E,F,G,H,I> (9 elemente)

Decenii<A,B,C,D,E,F,G,H,I,J> (10 elemente)

Aceste clase arhetipale sunt clase generice, astfel încât literele din paranteze unghiulare pot fi înlocuite cu tipuri arbitrare. Mai jos este un exemplu de cod binar





Prin tragerea inferențelor, restul tipurilor de tuple sunt folosite în același mod.

Pentru că tuplele Java nu sunt suportate de limbajul propriu-zis, codul arată javaneză și mai puțin elegant. Totuși, atunci când scrii cod, pe lângă comoditatea scrierii care poate îmbunătăți eficiența, este mai important să acorzi mai multă atenție sensului exprimat de codul în sine, adică să folosești sensul (funcția) tuplei pentru a îmbunătăți codul, iar modul de a o scrie este de fapt doar secundar.

În final, trebuie menționat că tipul din parantezele unghiulare generice nu poate fi tipul de bază al Java; dacă vrei să folosești tipul de bază, acesta trebuie să fie și tipul de bază care a fost boxat, de exemplu tipul int trebuie convertit în Întreg, iar tipul bool corespunde tipului Boolean.




Precedent:POI CellStyle setează culoarea de fundal a celulei
Următor:Tutorial .NET/C# MailKit pentru trimiterea de emailuri [cu cod sursă]
 Proprietarul| Postat pe 15.09.2021 10:55:08 |
Trebuie să folosești Maven pentru a introduce dependențe de acest fel:


Javatuple-urile ne permit să creăm până la zece valori de returnare


Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com