Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 28269|Svar: 1

[Kilde] Brugen af tupler i Java

[Kopier link]
Opslået på 31/08/2021 11.22.41 | | | |
Tupler har en særlig betydning inden for computere, dette navn kan lyde lidt ukendt, og der findes stort set ingen anvendelsesscenarier i at skrive kode, men overraskende nok er tuples tæt beslægtet med programmering, nogle studerende ved måske ikke, at et andet akademisk navn for "poster" i relationelle databaser er "tuples", en post er en tuple, en tabel er en relation, poster består af tabeller, tupler genererer relationer, dette er kernekonceptet i relationelle databaser.

Tupler er en uadskillelig del af en relationel database, men de er ikke så uundværlige i programmering. Nogle programmeringssprog har deres egen tuplesyntaks, såsom python, F#, haskell, scala osv., mens andre er mere populære, men ikke har tuplesyntaks, såsom Java, JavaScript, C++, C# osv.

Tupler er ikke uundværlige programmeringselementer som arrays og objekter, men deres anvendelse kan være meget praktisk til at skrive kode, især når en funktion skal returnere flere værdier. I dette tilfælde er den almindelige praksis at definere et objekt, sætte den værdi, funktionen skal returnere, som objektets attribut, og derefter sætte returnværditypen for funktionen til objektets type. Eller du kan lade denne funktion returnere en kortdatastruktur, hvor de specifikke data findes. Begge tilgange har dog deres fejl, og den første metode er pålidelig, men koden er usædvanligt oppustet. Kravene i sig selv er meget simple, så længe funktionen returnerer flere værdier, men denne metode kræver, at man definerer en type på forhånd, derefter instansierer den, sætter instansens egenskaber og til sidst returnerer, hvilket er for ineffektivt. Selvom den anden metode er hurtig, men ikke sikker nok, kan funktionen inde i funktionen vide, hvilken slags værdi der er gemt i kortet, men uden for funktionen kun vide, at returværdien af denne funktion er et kort, altså hvilke værdier der gemmes i kortet, hvilken type er ukendt, i flerpersoners udviklingsprojekter. Denne ulempe er især åbenlys, desværre er denne praksis den foretrukne løsning i nogle dynamisk typede sprog, hvilket også er en af de grundlæggende grunde til, at dynamisk typede sprog klages over for dårlig sikkerhed og læsbarhed. Derfor er den bedste løsning på denne type problem at bruge tupler.

I sprog, hvor syntaksen selv understøtter tupler, repræsenteres tupler ved parenteser, såsom (int, bool, string) er en triple-type, og dens værdi kan være (1, true, "abc"). Det skal bemærkes, at hver tupletype er unik, (int, bool), (bool, int), (streng, double) alle er binære filer, men de er forskellige tuple, hvis man tager en bestemt tuple her som returværdien af funktionen, selvom den ikke er lige så god som den første løsning med brugerdefinerede typer nævnt tidligere med hensyn til læsbarhed og sikkerhed, men den er meget bedre end den anden løsning med map – i det mindste kan man ved hjælp af tupler vide, hvor mange værdier funktionen vil returnere, Hvilken type værdi er disse værdier, og det har fordelen af at være simpelt og hurtigt at kode et andet skema ved hjælp af map.

Heldigvis understøtter disse programmeringssprog nu generiske programmer, og implementeringen af ikke-indbyggede tupler er blevet ekstremt enkel, men det er trods alt et ikke-sprogligt indbygget syntakselement, og det er bestemt ikke lige så bekvemt at bruge som native tuples.

Følgende introducerer et tredjeparts Java-tuplebibliotek, kaldet Javatuples, med sin egen officielle hjemmeside og hundredvis af github-stjerner, som næsten indtager en monopolposition inden for Java-tuples.

Javatuples definerer en tuple med en maksimal længde på 10, men jeg mener, at antallet af elementer i en 10-tuple allerede er for meget, og der er stort set ingen læsbarhed. Tupleklasser defineres som følger:

Enhed<A> (1 element)

Par<A,B> (2 elementer)

Triol<A,B,C> (3 elementer)

Kvartet<A,B,C,D> (4 elementer)

Kvintet<A,B,C,D,E> (5 elementer)

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

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

Oktet<A,B,C,D,E,F,G,H> (8 elementer)

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

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

Disse arketypiske klasser er generiske klasser, så bogstaverne i vinkle parenteser kan erstattes med vilkårlige typer. Nedenfor er et eksempel på en binær kode





Ved at drage slutninger bruges resten af tuple-typerne på samme måde.

Fordi Javas tupler ikke understøttes af selve sproget, ser koden javanesisk og mindre elegant ud. Men når man skriver kode, kan skrivning, ud over bekvemmeligheden ved skrivning forbedre effektiviteten, det er vigtigere at være mere opmærksom på den betydning, koden udtrykker, nemlig at bruge tuplens betydning (funktion) til at forbedre koden, og hvordan man skriver den, er faktisk kun sekundært.

Endelig skal det bemærkes, at typen i de generiske vinkelparenteser ikke kan være den grundlæggende type af Java; hvis du vil bruge den grundlæggende type, skal det også være den grundlæggende type, der er blevet bokset, såsom at int-typen skal konverteres til et heltal, og bool-typen svarer til den booleske type.




Tidligere:POI CellStyle sætter cellens baggrundsfarve
Næste:.NET/C# MailKit Vejledning til at sende mail [med kildekode]
 Udlejer| Opslået på 15/09/2021 10.55.08 |
Du skal bruge maven til at introducere afhængigheder som denne:


Javatuples tillader os at skabe op til ti returværdier


Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com