Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 28269|Atsakyti: 1

[Šaltinis] Tuples naudojimas Java

[Kopijuoti nuorodą]
Paskelbta 2021-08-31 11:22:41 | | | |
Tuples turi ypatingą reikšmę kompiuterių srityje, šis pavadinimas gali skambėti šiek tiek nepažįstamai, o rašant kodą iš esmės nėra taikymo scenarijų, tačiau, keista, tuples yra glaudžiai susiję su programavimu, kai kurie studentai gali nežinoti, kad kitas akademinis "įrašų" pavadinimas reliacinėse duomenų bazėse yra "tuples", įrašas yra tuple, lentelė yra ryšys, įrašai susideda iš lentelių, tuples generuoja ryšius, tai yra pagrindinė reliacinių duomenų bazių koncepcija.

Tuples yra neatsiejama reliacinės duomenų bazės dalis, tačiau jie nėra tokie būtini programuojant. Kai kurios programavimo kalbos turi savo tuple sintaksę, pvz., python, F#, haskell, scala ir kt., o kitos yra populiaresnės, bet neturi tuple sintaksės, pvz., Java, JavaScript, C++, C# ir kt.

Tuples nėra nepakeičiami programavimo elementai, tokie kaip masyvai ir objektai, tačiau jų naudojimas gali būti labai patogus rašant kodą, ypač kai funkcijai reikia grąžinti kelias reikšmes. Šiuo atveju įprasta praktika yra apibrėžti objektą, nustatyti reikšmę, kurią funkcija turi grąžinti kaip objekto atributą, o tada nustatyti funkcijos grąžinamos reikšmės tipą į objekto tipą. Arba galite nustatyti, kad ši funkcija grąžintų žemėlapio duomenų struktūrą, kurioje yra konkretūs duomenys. Tačiau abu metodai turi savo trūkumų, o pirmasis metodas yra patikimas, tačiau kodas yra neįprastai išpūstas. Patys reikalavimai yra labai paprasti, jei funkcija grąžina kelias reikšmes, tačiau šis metodas reikalauja iš anksto apibrėžti tipą, tada jį instanciuoti, tada nustatyti egzemplioriaus ypatybes ir galiausiai grąžinti, o tai yra per daug neefektyvu. Nors antrasis metodas yra greitas, bet nepakankamai saugus, funkcijos viduje gali žinoti, kokia reikšmė saugoma žemėlapyje, bet už funkcijos ribų, tik žinokite, kad šios funkcijos grąžinama vertė yra žemėlapis, kaip kokios reikšmės saugomos žemėlapyje, kokio tipo nežinoma, kelių asmenų kūrimo projektuose Šis trūkumas yra ypač akivaizdus, deja, ši praktika yra tinkamiausias sprendimas kai kuriose dinamiškai tipuojamose kalbose, o tai taip pat yra viena iš pagrindinių priežasčių, kodėl dinamiškai įvestos kalbos skundžiamasi dėl prasto saugumo ir skaitomumo. Todėl geriausias tokio tipo problemų sprendimas yra naudoti tuples.

Kalbose, kuriose pati sintaksė palaiko tuples, tuples vaizduojami skliausteliuose, pvz., (int, bool, string) yra trigubo tipo, o jo reikšmė gali būti (1, true, "abc"). Reikėtų pažymėti, kad kiekvienas tupel tipas yra unikalus, (int, bool), (bool, int), (eilutė, dvigubas) yra visi dvejetainiai, tačiau jie yra skirtingi tupeliai, jei čia paimsite tam tikrą tupel kaip grąžinamąją funkcijos vertę, nors jis nėra toks geras kaip pirmasis sprendimas, naudojant anksčiau minėtus pasirinktinius tipus skaitomumo ir saugumo požiūriu, tačiau jis yra daug geresnis nei antrasis sprendimas naudojant žemėlapį, bent jau naudojant tuples gali žinoti, kiek reikšmių funkcija grąžins, Kokio tipo vertės yra šios reikšmės, ir ji turi pranašumą, kad yra paprasta ir greita koduoti antrą schemą naudojant žemėlapį.

Laimei, šios programavimo kalbos dabar palaiko generinius žodžius, o neįmontuotų tuplių įgyvendinimas tapo labai paprastas, tačiau juk tai yra ne kalbos integruotas sintaksės elementas, ir jį tikrai nėra taip patogu naudoti kaip vietinius tuples.

Toliau pristatoma trečiosios šalies Java tuples biblioteka, vadinama Javatuples, su savo oficialiu pagrindiniu puslapiu ir šimtais github žvaigždžių, kuri beveik vaidina monopolinę padėtį Java tuples srityje.

Javatuples apibrėžia tupelį, kurio maksimalus ilgis yra 10, bet manau, kad elementų skaičius 10 tupel jau yra per didelis, ir iš esmės nėra skaitomumo. Tuple klasės apibrėžiamos taip:

Vienetas<A> (1 elementas)

Pora<A,B> (2 elementai)

Tripletas<A,B,C> (3 elementai)

Kvartetas<A,B,C,D> (4 elementai)

Kvintetas<A,B,C,D,E> (5 elementai)

Sekstetas<A,B,C,D,E,F> (6 elementai)

Septetas<A,B,C,D,E,F,G> (7 elementai)

Oktetas<A,B,C,D,E,F,G,H> (8 elementai)

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

Dešimtmetis<A,B,C,D,E,F,G,H,I,J> (10 elementų)

Šios archetipinės klasės yra bendrosios klasės, todėl raides kampiniuose skliaustuose galima pakeisti savavališkais tipais. Žemiau pateikiamas dvejetainio kodo pavyzdys





Darant išvadas, likę tuplių tipai naudojami taip pat.

Kadangi Java tuples nepalaiko pati kalba, kodas atrodo javanietiškas ir mažiau elegantiškas. Tačiau rašant kodą, be to, kad rašymo patogumas gali pagerinti efektyvumą, svarbiau daugiau dėmesio skirti paties kodo išreikštai reikšmei, tai yra naudoti paties tupelio reikšmę (funkciją) kodui patobulinti, o kaip jį parašyti iš tikrųjų yra tik antraeilis.

Galiausiai, reikia pažymėti, kad tipas bendruosiuose kampiniuose skliausteliuose negali būti pagrindinis Java tipas, jei norite naudoti pagrindinį tipą, jis taip pat turi būti pagrindinis tipas, kuris buvo dėžutėje, pvz., int tipas turi būti konvertuotas į sveikąjį skaičių, o bool tipas atitinka Bulio tipą.




Ankstesnis:POI CellStyle nustato langelio fono spalvą
Kitą:.NET/C# MailKit pamoka, skirta siųsti laiškus [su šaltinio kodu]
 Savininkas| Paskelbta 2021-09-15 10:55:08 |
Norėdami įvesti tokias priklausomybes, turite naudoti "Maven":


"Javatuples" leidžia mums sukurti iki dešimties grąžinamų reikšmių


Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com