Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 28269|Odgovoriti: 1

[Vir] Uporaba n-tic v Javi

[Kopiraj povezavo]
Objavljeno na 31. 08. 2021 11:22:41 | | | |
N-torke imajo poseben pomen na področju računalništva, to ime se morda sliši nekoliko neznano, pravzaprav pa ni uporabnih scenarijev pri pisanju kode, presenetljivo pa so n-torice tesno povezane s programiranjem; nekateri študenti morda ne vedo, da je drugo akademsko ime za "zapise" v relacijskih bazah podatkov "n-torke", zapis je n-ster, tabela je relacija, zapisi so sestavljeni iz tabel, n-tice generirajo relacije, to je temeljni koncept relacijskih baz podatkov.

N-torke so neločljiv del relacijske baze podatkov, vendar niso tako nepogrešljive v programiranju. Nekateri programski jeziki imajo svojo lastno sintakso n-tic, kot so python, F#, haskell, itd., medtem ko so drugi bolj priljubljeni, vendar nimajo sintakse n-tic, kot na primer Java, JavaScript, C++, C# itd.

N-torice niso nepogrešljivi programski elementi, kot so polja in objekti, vendar je njihova uporaba lahko zelo priročna za pisanje kode, še posebej, kadar mora funkcija vrniti več vrednosti. V tem primeru je običajna praksa definirati objekt, nastaviti vrednost, ki jo funkcija mora vrniti kot atribut objekta, nato pa nastaviti tip vrnjene vrednosti funkcije na tip objekta. Lahko pa ta funkcija vrne podatkovno strukturo zemljevida, v kateri obstajajo specifični podatki. Vendar imata oba pristopa svoje pomanjkljivosti, prva metoda je zanesljiva, vendar je koda nenavadno napihnjena. Zahteve same po sebi so zelo preproste, dokler funkcija vrne več vrednosti, vendar ta metoda zahteva predhodno določitev tipa, nato njegovo instanciranje, nastavitev lastnosti instance in na koncu vrnitev, kar je preveč neučinkovito. Čeprav je druga metoda hitra, a ne dovolj varna, lahko znotraj funkcije ve, kakšna vrednost je shranjena v zemljevidu, zunaj funkcije pa ve, da je povratna vrednost te funkcije preslikava, kar zadeva to, katere vrednosti so shranjene na zemljevidu in katera vrsta, ni znano, v veččlanskih razvojnih projektih. Ta slabost je še posebej očitna, žal je ta praksa prednostna rešitev v nekaterih dinamično tipiziranih jezikih, kar je tudi eden temeljnih razlogov, zakaj se na dinamično tipizirane jezike pritožuje zaradi slabe varnosti in berljivosti. Zato je najboljša rešitev za tovrstni problem uporaba n-tic.

V jezikih, kjer sintaksa sama podpira n-terke, so n-tice predstavljene z oklepaji, kot so (int, bool, string) je trojni tip, njegova vrednost pa je lahko (1, true, "abc"). Treba je poudariti, da je vsak tip n-tic edinstven, (int, bool), (bool, int), (string, double) so vse binarne n-rice, vendar so različne n-torice, če vzamete določeno n-tico tukaj kot povratno vrednost funkcije, čeprav ni tako dobra kot prva rešitev z uporabo prej omenjenih prilagojenih tipov glede berljivosti in varnosti, je pa veliko boljša od druge rešitve, ki uporablja map, saj lahko vsaj z n-ticami vemo, koliko vrednosti bo funkcija vrnila, Kakšne vrednosti so te vrednosti, in prednost je, da je enostavno in hitro programirati drugo shemo z uporabo zemljevida.

Na srečo ti programski jeziki zdaj podpirajo generične jezike, implementacija nevgrajenih n-tic pa je postala izjemno preprosta, vendar gre za ne-jezikovni vgrajeni sintaktični element in zagotovo ni tako priročen za uporabo kot nativne n-tice.

Naslednje predstavlja knjižnico Java tuple tretje osebe, imenovano Javatuples, z lastno uradno domačo stranjo in stotinami github zvezdic, ki skorajda igra monopolni položaj na področju Java tuple.

Javatupli definirajo n-tico z največjo dolžino 10, vendar menim, da je število elementov v 10-n-terici že preveliko, poleg tega pa praktično ni berljivosti. Razredi n-toric so definirani na naslednji način:

Enota<A> (1 element)

Par<A,B> (2 elementa)

Triplet<A,B,C> (3 elementi)

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

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

Sekstet<A,B,C,D,E,F> (6 elementov)

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

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

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

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

Ti arhetipski razredi so generični razredi, zato je mogoče črke v kotnih oklepajih zamenjati s poljubnimi tipi. Spodaj je primer binarne kode





Z izpeljavanjem sklepov se ostale vrste n-tic uporabijo na enak način.

Ker Java n-tice ne podpira samega jezika, koda izgleda javansko in manj elegantno. Vendar pa je pri pisanju kode, poleg udobja pisanja, ki lahko izboljša učinkovitost, pomembneje posvetiti več pozornosti pomenu, ki ga izraža sama koda, torej uporabiti pomen (funkcijo) same n-tice za izboljšanje kode, in kako jo napisati, je pravzaprav sekundarno vprašanje.

Nazadnje je treba poudariti, da tip v generičnih kotnih oklepajih ne more biti osnovni tip Jave; če želite uporabiti osnovni tip, mora biti tudi osnovni tip, ki je bil označen v okvirju, na primer int tip mora biti pretvorjen v celo število, bool tip pa ustreza Booleovemu tipu.




Prejšnji:POI CellStyle nastavi barvo ozadja celice
Naslednji:.NET/C# MailKit vodič za pošiljanje pošte [z izvorno kodo]
 Najemodajalec| Objavljeno na 15. 09. 2021 10:55:08 |
Uporabiti morate maven, da uvedete odvisnosti, kot je ta:


javatupli nam omogočajo ustvarjanje do desetih povratnih vrednosti


Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com